MySQL 源碼編譯參數繁多,生產環境建議採用優化編譯旗標:禁用 Debug 模式、啟用靜態鏈接、針對 CPU 指令集優化。本文匯總經驗驗證的 ./configure 參數組合(適用 5.4 及之前版本),並解釋關鍵參數性能影響。
./configure \
--prefix=/usr/local/mysql \
--without-debug \
--without-bench \
--enable-thread-safe-client \
--enable-assembler \
--enable-profiling \
--enable-community-features \
--with-mysqld-ldflags=-all-static \
--with-client-ldflags=-all-static \
--with-charset=utf8 \
--with-extra-charsets=all \
--with-innodb \
--with-csv-storage-engine \
--with-federated-storage-engine \
--with-mysqld-user=mysql \
--without-embedded-server \
--with-server-suffix=-community \
--with-unix-socket-path=/usr/local/mysql/sock/mysql.sock
| 參數 | 作用 | 性能影響 |
|---|---|---|
--without-debug | 禁用 Debug 符號與斷言檢查 | 預設 Debug 模式損失 10-20% 性能,生產必禁 |
--with-mysqld-ldflags=-all-static--with-client-ldflags=-all-static | 靜態鏈接 libstdc++、libgcc、libc 等 | 消除動態鏈接開銷,靜態二進制比動態快 5-10% |
--enable-assembler | 啟用汇編優化路徑(x86_64 SSE/AVX) | 關鍵熱點函數(校驗和、壓縮、加密)提速顯著 |
--without-bench | 不編譯基準測試工具 | 減小二進制體積、編譯時間 |
--with-charset=utf8 | 默認字符集 utf8(建議 utf8mb4) | 避免運行時字符集轉換開銷 |
--with-innodb | 編譯 InnoDB 存儲引擎 | 核心事務引擎,生產必選 |
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DCMAKE_BUILD_TYPE=Release \
-DWITH_DEBUG=OFF \
-DWITH_INNODB=ON \
-DWITH_INNODB_MEMCACHED=ON \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LZ4=system \
-DWITH_SNAPPY=ON \
-DENABLED_PROFILING=ON \
-DWITH_UNIT_TESTS=OFF \
-DWITH_EDITLINE=system
-DCMAKE_BUILD_TYPE=Release 等同 --without-debug。yum install -y gcc gcc-c++ cmake ncurses-devel bison openssl-devel \
libaio-devel libxml2-devel libcurl-devel lz4-devel snappy-devel
生產編鐵律:Release 構建 + static linking + CPU 原生指令集 + 最小化組件。參數組合經壓測驗證後固化為構建腳本/ Dockerfile,確保版本間一致性。MySQL 8.0+ 建議直接使用官方預編譯二進制或容器鏡像,僅在極致性能定製場景才自行編譯。