首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL my.cnf 核心參數詳解 Part 3:InnoDB 專項調優配置

     編輯:MySQL 資料庫相關知識

InnoDB 核心參數配置模板


# *** INNODB 相關選項 ***
# 不用 InnoDB 可關閉節省資源
# skip-innodb

# 元數據內存池
innodb_additional_mem_pool_size = 16M

# 核心緩衝池(數據+索引),專用庫建議 70-80% 物理內存
innodb_buffer_pool_size = 2G

# 表空間文件:自動擴展
innodb_data_file_path = ibdata1:10M:autoextend
# innodb_data_home_dir = /other/path

# IO 線程數(Unix 硬編碼 4,Windows 可調大)
innodb_file_io_threads = 4

# 損壞恢復嘗試(1-6 遞增)
# innodb_force_recovery = 1

# 核心併發線程數
innodb_thread_concurrency = 16

# 事務日志刷盤策略:1=完全ACID,0/2=高性能犧牲部分安全
innodb_flush_log_at_trx_commit = 1

# 加速關閉(禁用全清理+插入緩衝合併)
# innodb_fast_shutdown

# 日志緩衝區
innodb_log_buffer_size = 8M

# 日志文件大小:建議 25%-100% buffer_pool,過大延長恢復時間
innodb_log_file_size = 256M
innodb_log_files_in_group = 3

# 日志文件目錄(可放獨立磁盤/RAID1)
# innodb_log_group_home_dir = /path/to/logs

# 髒頁比例上限,觸發積極刷盤
innodb_max_dirty_pages_pct = 90

# 刷盤方式:fdatasync(默認) / O_DSYNC
# innodb_flush_method = O_DSYNC

# 鎖等待超時(秒)
innodb_lock_wait_timeout = 120

配套工具段配置


[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# safe-updates

[isamchk]
key_buffer = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M

[myisamchk]
key_buffer = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M

[mysqlhotcopy]
interactive-timeout

[mysqld_safe]
open-files-limit = 8192  # 需系統 ulimit 配合

關鍵參數調優心法

  1. innodb_buffer_pool_size:最重要,盡量大,至少 50% 內存
  2. innodb_flush_log_at_trx_commit:1 最安全,高併寫可設 2(秒級丟失風險)
  3. innodb_log_file_size:大減少 checkpoint 頻率,但增大恢復時間,256M-1G 常見
  4. innodb_thread_concurrency:0 表示不限(新版默認),舊版建議 2*(CPU核心+磁盤數)
  5. innodb_file_io_threads:Linux 保持 4,Windows 可調 8-16
  6. open-files-limit:配合系統 ulimit -n 65535,防「Too many open files」
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved