Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cấu hình MySQL tối ưu trong my.cnf (innodb_buffer_pool_size, innodb_log_file_size)

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

  1. Dừng MySQL: systemctl stop mysql
  2. Sửa my.cnf
  3. Xóa/đổi tên file log cũ: rm /var/lib/mysql/ib_logfile*
  4. 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_capacity thay thế log_file_size + log_files_in_group.