Hướng Dẫn Bảng Tạm MariaDBBench: Đồng Bộ tmp_table_size, max_heap_table_size & Bẫy Cột TEXT/BLOB
MariaDBBench giải thích công thức MIN(tmp_table_size, max_heap_table_size), lý do cột TEXT/BLOB buộc tạo bảng tạm trên đĩa ngay lập tức và giới hạn OOM đa luồng.
Nạp Cấu Hình GUIDE-08 Vào Trình Sinh 50-server.cnf →- Công Thức Giới Hạn Thực
- MIN(tmp_table_size, max_heap_table_size)
- Engine Bảng Tạm Đĩa MariaDB
- Aria Internal Temp Tables
- Quy Tắc Cột TEXT / BLOB
- Bỏ Qua MEMORY Ghi Thẳng Đĩa
- Phạm Vi Cấp Phát RAM
- Theo Từng Truy Vấn Đang Chạy
Truy Vấn SQL Chẩn Đoán Trực Tiếp Trên MariaDBBench (tmp_table_size & Bảng Tạm Đĩa)
Chạy truy vấn đọc-chỉ-định dưới đây trên giao diện dòng lệnh mariadb để kiểm tra trạng thái thực tế của máy chủ trước khi sửa tệp 50-server.cnf.
-- Truy vấn MariaDBBench: Tính tỷ lệ phần trăm bảng tạm nội bộ bị đẩy xuống ổ cứng
SELECT
SUM( IF(VARIABLE_NAME = 'Created_tmp_tables', VARIABLE_VALUE, 0) ) AS total_tmp_tables,
SUM( IF(VARIABLE_NAME = 'Created_tmp_disk_tables', VARIABLE_VALUE, 0) ) AS disk_tmp_tables,
ROUND(
SUM( IF(VARIABLE_NAME = 'Created_tmp_disk_tables', VARIABLE_VALUE, 0) ) * 100.0 /
GREATEST(1, SUM( IF(VARIABLE_NAME = 'Created_tmp_tables', VARIABLE_VALUE, 0) )), 2
) AS disk_spill_pct
FROM information_schema.GLOBAL_STATUS
WHERE VARIABLE_NAME IN ('Created_tmp_tables', 'Created_tmp_disk_tables');
Bảng Tham Chiếu Định Cỡ MariaDBBench Cho tmp_table_size & Bảng Tạm Đĩa
| Tổ Hợp Khai Báo Trong 50-server.cnf | Trần Bộ Nhớ Thực Tế | Hành Vi Theo Tài Liệu Chính Thức MariaDB |
|---|---|---|
| tmp_table_size = 128M, max_heap_table_size = 16M | Chỉ 16 MB (bị chặn bởi số nhỏ hơn) | Đẩy mọi bảng tạm GROUP BY > 16 MB xuống tệp đĩa Aria |
| Đặt cả hai biến lên 2G trên máy đông kết nối | Tối đa 2.048 MB mỗi câu truy vấn | Rủi ro tràn RAM OOM khi hàng chục báo cáo chạy cùng lúc |
| Đồng bộ 64M–128M + truy vấn con lọc cột ID trước | 64 MB – 128 MB an toàn | Giữ phép gom nhóm trong RAM mà không đe dọa tổng bộ nhớ |
Quy Tắc Đối Xứng MIN(tmp_table_size, max_heap_table_size) Trong Tài Liệu MariaDB
Theo tài liệu chính thức của MariaDB và MySQL, kích thước tối đa của bảng tạm ngầm định trên RAM luôn bị khóa bởi giá trị nhỏ hơn giữa tmp_table_size và max_heap_table_size. Nếu chỉ tăng một biến mà quên biến còn lại ở mức mặc định 16M, mọi phép GROUP BY vượt 16 MB vẫn tràn xuống ổ đĩa. Do đó trình sinh 50-server.cnf của MariaDBBench luôn gán hai biến này bằng nhau.
Vì Sao Cú Pháp SELECT * Dính Cột TEXT/BLOB Luôn Bỏ Qua Bảng Tạm Trên RAM?
Engine MEMORY dùng cho bảng tạm trên RAM của MariaDB không chứa được các cột kiểu TEXT hoặc BLOB. Bất kỳ câu truy vấn gom nhóm nào gọi SELECT * kéo theo cột nội dung dài đều bị chuyển thẳng sang bảng đĩa Aria ngay từ dòng đầu tiên. Tách câu lệnh gom nhóm theo khóa chính số nguyên trước rồi mới JOIN lấy cột văn bản sẽ giải quyết triệt để hiện tượng này.
Giữ Ngưỡng Bảng Tạm Vừa Phải Để Bảo Vệ Máy Chủ Khi Tăng max_connections
Vì bộ nhớ bảng tạm được cấp riêng cho từng câu lệnh đang thực thi, chúng tôi khuyến nghị khóa ngưỡng đồng bộ trong khoảng 64M–192M và đặt thư mục tmpdir trên ổ cứng NVMe tốc độ cao.
Tùy Chọn Hạ Tầng NVMe Tương Thích Cho tmp_table_size & Bảng Tạm Đĩa (Giá Công Khai 2026-11-12)
Thông số quyền truy cập root 50-server.cnf và mức giá khởi điểm cập nhật ngày 2026-11-12; giá khuyến mãi và gia hạn có thể thay đổi theo chính sách từng hãng.
Hostinger KVM NVMe VPS (Toàn Quyền Root MariaDB 11.4 LTS) — MariaDBBench Spec Match
Local PCIe 4.0 NVMe (Uncapped IOPS, Zero AWS I/O Billing) • 100% Root Access (/etc/mysql/mariadb.conf.d/99-tuned.cnf). Giá niêm yết (2026-11-12) từ $5.99/tháng (https://www.hostinger.com/vps-hosting).
Xem Gói Hostinger KVM MariaDB 11.4 Từ $5.99/tháng (GUIDE-08) →ChemiCloud Managed MariaDB + LiteSpeed Enterprise NVMe — MariaDBBench Spec Match
Enterprise Gen4 NVMe RAID-10 (Zero I/O Throttling Burst) • Managed Pre-Tuned Pool + Redis Memcached Offload. Giá niêm yết (2026-11-12) từ $2.95/tháng (https://chemicloud.com/wordpress-hosting).
Xem Gói ChemiCloud MariaDB NVMe Từ $2.95/tháng (GUIDE-08) →UltaHost Dedicated VDS (Chuyên Trị InnoDB Lớn & Cụm Galera) — MariaDBBench Spec Match
Enterprise U.3 NVMe RAID-10 (Sustained Write fsync) • 100% Dedicated Kernel sysctl + Custom 99-tuned.cnf. Giá niêm yết (2026-11-12) từ $37.50/tháng (https://ultahost.com/vds-hosting).
Xem Gói UltaHost VDS MariaDB RAM Lớn Từ $37.50/tháng (GUIDE-08) →Các Chuyên Đề Cấu Hình MariaDB 11.4 Liên Quan Khác Trên MariaDBBench (GUIDE-08)
Quy Tắc 70% InnoDB Buffer Pool Trên MariaDBBench: Phòng Chống Lỗi OOM-Killer Trong 50-server.cnf
MariaDBBench tính toán innodb_buffer_pool_size theo chuẩn 70% cho máy chủ DB riêng và 45% cho máy chủ chạy gộp LAMP để dự phòng khung quản lý trang 16KB và bộ đệm kết nối.
Hướng Dẫn Chuẩn Hóa WooCommerce HPOS & Chỉ Mục B+Tree Bảng wp_postmeta Trên MariaDBBench
MariaDBBench phân tích lý do chỉ mục mặc định meta_key(191) làm phân mảnh trang InnoDB 16KB và cơ chế chuẩn hóa bảng đơn hàng của WooCommerce HPOS.
MariaDB 11.4 LTS So Với MySQL 8.4 LTS Trên MariaDBBench: Thread Pool, JSON & Cú Pháp my.cnf
MariaDBBench đối chiếu tài liệu kiến trúc chính thức giữa MariaDB 11.4 LTS và MySQL 8.4 LTS về bộ điều phối luồng, lưu trữ JSON và biến cấu hình Redo Log.
Giải Đáp Kỹ Thuật MariaDBBench Về tmp_table_size & Bảng Tạm Đĩa
Tại sao MariaDBBench không đặt tmp_table_size = 1G dù máy chủ có 32 GB RAM?
Vì một câu lệnh SQL phức tạp có thể mở nhiều bảng tạm cùng lúc; nếu 30 người dùng chạy báo cáo đồng thời ở mức 1G mỗi luồng, hệ thống sẽ đòi thêm 30 GB RAM ngoài vùng Buffer Pool.
MySQL 8.4 xử lý bảng tạm chứa cột VARCHAR/BLOB khác gì so với MariaDB 11.4?
MySQL 8.4 dùng Temptable engine có trần chung toàn cục temptable_max_ram (mặc định 1G), trong khi MariaDB 11.4 kết hợp MEMORY engine với vùng đệm aria_pagecache_buffer_size.