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

MySQL 關鍵效能參數深度調優指南:11 大核心變數詳解

     編輯:MySQL 資料庫相關知識

1. key_buffer_size(MyISAM 索引緩衝)

  • 所有執行緒共用,僅 MyISAM 生效。
  • 5.1+ 支援多 Key Cache:CACHE INDEX t1,t2 IN hot_cache、SET GLOBAL hot_cache.key_buffer_size=...、LOAD INDEX INTO CACHE t1 IGNORE LEAVES 預熱。
  • 建議:專用 MyISAM 伺服器設 25%-50% 實體記憶體;極少用 MyISAM 保留 16-32MB 供臨時表。

2. table_open_cache(表快取)

  • 開啟表描述符快取數,關聯 max_connections。建議 ≥ max_connections * N(N=單查詢最大連接表數)。
  • 監控 Opened_tables 狀態變數,持續增長需調大。

3. innodb_buffer_pool_size(InnoDB 資料+索引緩衝)

  • 專用 DB 伺服器建議設 70-80% 實體記憶體。
  • 過大導致 OS 記憶體壓力引發 Swap,反而降效。

4. innodb_flush_log_at_trx_commit(Redo Log 刷盤策略)

值行為安全性效能
0Log Buffer 每秒寫檔並 fsync,Commit 不動作崩潰丟 1 秒事務最高
1每 Commit 寫檔並 fsync最安全(預設)基準
2每 Commit 寫檔,每秒 fsyncOS 不崩潰不丟資料較好
  • 手冊建議複製環境必須用 1;可容忍丟資料才考慮 0/2。

5. innodb_additional_mem_pool_size

  • 儲存資料字典等內部結構,預設 1MB。表多則調大;耗盡會向 OS 申請並寫錯誤日誌。無需過大,穩定即可。

6. innodb_table_locks

  • 預設 1,LOCK TABLES 觸發 InnoDB 內部表鎖,AUTOCOMMIT=1 易死鎖。設 0 關閉。

7. innodb_lock_wait_timeout

  • 表鎖死鎖無法自動偵測,依賴此超時(預設 50s)回滾。按業務調整。

8. innodb_support_xa

  • 支援分散式事務(XA),預設 ON。確認不需 XA 可關閉,減少 fsync 提升效能。

9. innodb_doublewrite

  • 雙重寫入緩衝區防止頁損壞,預設 ON。效能優先可 --skip-innodb-doublewrite 關閉。

10. innodb_log_buffer_size

  • 寫入負載大/事務長時調大(8-16MB 常足夠)。每秒刷盤,無需超過 1 秒產生量。

11. innodb_log_file_size

  • 高寫入/大資料集關鍵。越大效能越好,但崩潰恢復時間變長。建議 256MB-2GB 視負載調整。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved