Tóm tắt
Hai tham số quan trọng nhất cho hiệu năng InnoDB:
innodb_buffer_pool_size: Bộ nhớ cache dữ liệu + index (khuyến nghị 70-80% RAM).innodb_log_file_size: Kích thước redo log – lớn hơn = ghi nhanh hơn, recover lâu hơn.
Vị trí file cấu hình
-- Tìm thư mục data
SELECT @@datadir;
-- Windows thường: C:\ProgramData\MySQL\MySQL Server 8.0\Data\
-- my.cnf / my.ini ở thư mục cài đặt hoặc /etc/my.cnf (Linux)
Cấu hình mẫu
[mysqld]
# Cache 1GB (điều chỉnh theo RAM thực tế)
innodb_buffer_pool_size = 1024M
# Redo log 512MB (tăng từ mặc định 48MB)
innodb_log_file_size = 512M
# Các thiết lập đi kèm hữu ích
innodb_flush_log_at_trx_commit = 1 -- ACID đầy đủ, đổi 2 để nhanh hơn (rủi ro mất 1s dữ liệu)
innodb_file_per_table = ON
innodb_flush_method = O_DIRECT -- Linux, tránh double buffering
Quy trình thay đổi innodb_log_file_size an toàn
- Dừng MySQL:
systemctl stop mysql - Sửa my.cnf
- Xóa/đổi tên file log cũ:
rm /var/lib/mysql/ib_logfile* - Khởi động MySQL:
systemctl start mysql(sẽ tạo file log mới)
Lưu ý
- Không set buffer pool > RAM vật lý (gây swap).
- Log file size lớn làm recovery chậm sau crash.
- Benchmark trước/sau thay đổi.
- MySQL 8.0+ có
innodb_redo_log_capacitythay thế log_file_size + log_files_in_group.