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

MySQL 預設安裝後效能調優核心參數指南

     編輯:MySQL 資料庫相關知識

面試經典問題

「MySQL 預設安裝完成,應調整哪些參數?」只有少數關鍵參數對大多數負載有決定性影響,其餘多為微調。

核心全域參數 (按重要性排序)

1. key_buffer_size (MyISAM 專用)

  • 純 MyISAM:實體記憶體 30-40%
  • 混合/少量 MyISAM:16-32MB (供臨時表索引)
  • 檢查 Key_reads/Key_read_requests 命中率 > 99%

2. innodb_buffer_pool_size (InnoDB 核心) ⭐

  • 專用 InnoDB:實體記憶體 70-80%
  • 包含資料頁、索引頁、鎖、插入緩衝、自適應雜湊索引
  • 無需預留 OS Cache 空間 (InnoDB 自管)
  • 小資料集勿過大,避免浪費

3. innodb_log_file_size (寫入效能關鍵)

  • 大寫入負載:64M-512M
  • 越大 = Checkpoint 越少 = 效能越好,但崩潰恢復越慢
  • 總大小 = innodb_log_files_in_group * innodb_log_file_size ≤ Buffer Pool 25%

4. innodb_flush_log_at_trx_commit (效能與安全權衡) ⭐

5. innodb_log_buffer_size

  • 中等寫入/短事務:預設 8MB 足夠
  • 大事務/Blob/寫入峰值:16-64MB
  • 每秒刷盤,無需設 > 1秒產生量

6. table_cache / table_open_cache

  • 百表級:1024-2048
  • 千表/高併發:5000-10000+
  • 每連接獨立 open table handle,關聯 open_files_limit

7. thread_cache_size

  • 預設 0 → 每連接建立/銷毀線程開銷大
  • 建議 16-64,觀察 Threads_created 穩定不增長為宜

8. query_cache_size (5.7 棄用, 8.0 移除)

  • 唯讀密集、無應用層快取:32M-512M
  • 過大導致鎖爭用反而降速,監控 Qcache_hits/Inserts 命中率
  • 寫入頻繁表建議關閉 (query_cache_type=0)

會話級參數 (第二步調優)

sort_buffer_size, read_buffer_size, join_buffer_size, tmp_table_size 等視具體慢查詢 EXPLAIN 結果調整。簡單查詢無需加大,反而可能因記憶體分配開銷降速。

實用模板

MySQL 發布版自帶 my-small.cnf, my-medium.cnf, my-large.cnf, my-huge.cnf, my-innodb-heavy-4G.cnf,按硬體選擇最近者微調即可,優於手動從零開始。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
值行為適用場景
1 (預設)Commit 即 fsync核心交易、資金、訂單
2Commit 寫 OS Cache,1秒 fsync日誌、快取、可重算資料
01秒寫 Log 並 fsync極高寫入、可容忍秒級丟失