本文整理自 Monty 在 O'Reilly Open Source Convention 2000 大會演講第二部分,聚焦應用程式優化原則、可移植性設計、追求極致速度的策略、MySQL 服務端優化重點,以及編譯安裝層面的效能榨取。
SELECT *,只取業務必要欄位LOCK TABLES 集中執行--compress)EXPLAIN SELECT、SHOW VARIABLES、SHOW STATUS、SHOW PROCESSLISTmyisamchk、CHECK TABLE、OPTIMIZE TABLE| 策略 | 效果 | 備註 |
|---|---|---|
| 選擇平台最佳編譯器 | 典型提升 10-30% | Linux/Intel 用 pgcc(GCC 奔騰優化版),但二進制僅能跑 Intel 奔騰 |
| 採用官方推薦優化旗標 | 平台專屬調校 | 參考手冊編譯章節 |
| 原生編譯器優於 GCC | 通常更好(如 Sun Workshop for Sparc) | 不絕對,需實測 |
| 僅編譯所需字符集 | 減小二進制、提升快取命中 | --with-charset=xxx |
| 靜態編譯 + strip | 減少動態連結開銷 | --with-mysqld-ldflags=all-static + strip sql/mysqld |
| 禁用 C++ 例外支援 | 巨大效能提升 | MySQL 不用 C++ 特性,--without-libstdc++ |
| 原生執行緒庫 | 優於 MIT-pthreads | OS 支援時啟用 --with-named-thread-libs |
| 基準測試驗證 | 確認實際收益 | sql-bench 套件 |