萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 效能優化全鏈路:從編譯安裝、參數調校、表類型選擇到內建工具箱

涵蓋編譯期優化、運行期參數調校、儲存引擎選型、官方優化工具四大維度,構建 MySQL 效能優化完整知識體系。

一、編譯期優化 (源碼安裝時決定)

1.1 編譯器選擇

  • pgcc (Pentium GCC):針對 Pentium 微架構優化,整體效能提升 ~10%。非 Intel 平台勿用。

1.2 精簡字元集

./configure --with-extra-charsets=none  # 僅保留 latin1,減少體積與啟動開銷

1.3 靜態編譯 mysqld

./configure --with-mysqld-ldflags=-all-static --disable-shared
# 無動態庫依賴,啟動更快、運行略快,但無法動態載入插件

1.4 生產推薦編譯參數組合

CFLAGS="-O3 -march=native -fomit-frame-pointer" \
CXX=gcc CXXFLAGS="-O3 -march=native -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" \
./configure \
--prefix=/usr/local/mysql \
--enable-assembler \
--with-mysqld-ldflags=-all-static \
--disable-shared \
--with-extra-charsets=none

二、運行期參數調校 (my.cnf [mysqld])

配置檔作用域

  • Global:/etc/my.cnf (全域)
  • Instance:$MYSQL_BASE/var/my.cnf (單實例)
  • User:~/.my.cnf (用戶級,僅客戶端讀取)

核心參數模板 (參考 my-huge.cnf)

參數建議值說明
max_connections1000+配合 table_open_cache、open_files_limit
key_buffer_sizeRAM 25% (MyISAM)InnoDB 看 innodb_buffer_pool_size (RAM 60-70%)
read_buffer_size2M全掃描每執行緒緩衝
table_open_cache4000+減少開表開銷
long_query_time1慢查詢門檻 (秒),配合 slow_query_log=1

三、儲存引擎選型策略

引擎類別適用場景避坑指南
InnoDB (BDB 後繼)事務安全核心業務、高並發、需 ACID、行鎖、MVCC、熱備份預設首選,5.5+ 已為默認
MEMORY (HEAP)非事務極速查找表、暫存中間結果、查找表重啟資料消失、表鎖、不支援 BLOB/TEXT
MyISAM非事務唯讀/極少寫、全文索引 (5.6 前)、壓縮表表鎖、Crash 不安全、無外鍵
MERGE非事務同結構 MyISAM 表聯盟、日誌分表歸檔底層仍為 MyISAM,繼承其缺點

四、官方優化工具箱

  • SHOW STATUS:SHOW GLOBAL STATUS 即時掌握 QPS、連線、鎖、臨時表、InnoDB 狀態。
  • EXPLAIN:分析 SELECT 存取路徑、索引使用、排序、臨時表。
  • OPTIMIZE TABLE:回收碎片、重建索引、更新統計 (僅 MyISAM/InnoDB/ARCHIVE)。
  • ANALYZE TABLE:更新索引統計資訊 (Cardinality),助優化器決策。
  • CHECK TABLE / REPAIR TABLE:損壞偵測與修復 (MyISAM 為主)。

優化閉環

  1. 編譯安裝奠定效能上限。
  2. 參數調校適配硬體與負載。
  3. 引擎選型匹配業務特性。
  4. 工具巡檢 → 慢查詢 → EXPLAIN → 索引/改寫/參數 → 驗證 → 循環。

系統化優化,而非頭痛醫頭,才能持續榨乾硬體效能。

copyright © 萬盛學電腦網 all rights reserved