InnoDB 是 MySQL 處理海量數據、高並發事務的首選引擎:支持 ACID、行級鎖、MVCC、外鍵約束,CPU 效率極高。合理的參數配置能釋放硬件潛力,避免「小馬拉大車」。
SHOW ENGINE INNODB STATUS\G 中 BUFFER POOL AND MEMORY 區塊的 Total memory allocated。innodb_buffer_pool_size = 4G
in additional pool allocated 調整。innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size,單文件上限 4GB,建議總量 ≤ 2GB。innodb_log_file_size = 256M
innodb_log_files_in_group = 3
Innodb_os_log_written 增長過快則考慮調大。innodb_log_buffer_size = 3M
| 值 | 行為 | 性能 | 數據安全 |
|---|---|---|---|
| 1(默認) | 每次提交寫文件 + 刷盤 | 最低 | 不丟事務(ACID) |
| 2 | 每次提交寫文件,每秒刷盤 | 高 | 崩潰/斷電丟 1 秒 |
| 0 | 每秒寫文件 + 刷盤 | 最高 | 崩潰丟 1 秒 |
建議: 主庫堅持 1;從庫/可容忍少量丟失的業務可設 2 或 0。
innodb_flush_log_at_trx_commit = 1
ON (1):每表獨立 .ibd 文件,DROP/TRUNCATE 可回收空間,利於單表備份/遷移。innodb_file_per_table = 1
innodb_file_io_threads = 4
table_open_cache。innodb_open_files = 800
O_DIRECT:繞過文件系統緩存,減少雙重緩存、降低延遲。innodb_flush_method = O_DIRECT
SET GLOBAL innodb_max_dirty_pages_pct=50;(需 SUPER 權限)。innodb_max_dirty_pages_pct = 90
max_connections、query_cache)需結合業務單獨調優。SHOW ENGINE INNODB STATUS 實時觀測。