安裝完 mysql 后需進行基礎配置調優以提升性能,主要包括以下五點:1. 設置 innodb_buffer_pool_size 為物理內存的50%~80%,如16g內存可設為12g;2. 調整 max_connections 至合理并發數如500,并設置 wait_timeout 和 interactive_timeout 為600秒;3. 開啟慢查詢日志,設置 long_query_time 為1秒并記錄未使用索引的查詢;4. 增大 tmp_table_size、max_heap_table_size、sort_buffer_size 和 read_buffer_size 至適當值如64m和4m;5. 調整 innodb_log_file_size 至256m 提升寫入性能,同時注意修改需重啟。
安裝完 mysql 后,很多人只是簡單啟動就投入使用,其實這時候性能并不一定最優。要想讓 MySQL 發揮出更好的性能,合理的基礎配置調優是很有必要的。
下面是一些常見的優化點和建議,適合剛裝好 MySQL 的新手或中小型項目使用。
1. 調整 innodb_buffer_pool_size
這是 InnoDB 引擎最重要的一個參數,決定了它能緩存多少數據和索引。如果這個值太小,頻繁的磁盤 IO 會嚴重影響性能。
- 建議設置:把物理內存的 50%~80% 分配給它,前提是這臺服務器只跑 MySQL。
- 例如:如果你有 16G 內存,可以設為:
innodb_buffer_pool_size = 12G
- 如果服務器還運行其他服務,適當減少比例。
- 不要設得太小,比如默認可能是幾百 MB,這對大多數場景都不夠用。
2. 設置合適的連接數和超時時間
MySQL 默認的最大連接數不高,如果你的應用并發量大,可能會出現“Too many connections”的錯誤。
-
調整最大連接數:
max_connections = 500
根據你的業務需求來定,太高浪費資源,太低不夠用。
-
設置空閑連接超時時間:
wait_timeout = 600 interactive_timeout = 600
這樣可以讓空閑太久的連接自動斷開,釋放資源。
-
注意:如果應用用了連接池,可以把這個值適當調高一點,避免頻繁重連。
3. 開啟慢查詢日志,排查性能瓶頸
慢查詢日志可以幫助你發現那些執行慢、影響整體性能的 SQL。
-
開啟方式:
slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 1 log_queries_not_using_indexes = 1
-
long_query_time 表示超過多少秒的查詢會被記錄,默認是 10 秒,建議改成 1 或更小。
-
log_queries_not_using_indexes 可以記錄沒有走索引的查詢,方便后續優化。
-
建議:定期查看慢查詢日志,結合 EXPLAIN 分析 SQL 執行計劃,優化不合理的地方。
4. 配置臨時表大小和排序緩沖區
一些復雜查詢會用到排序、分組、臨時表等操作,如果這些緩沖區太小,就會導致大量磁盤 IO。
- 增加臨時表和排序緩沖區大小:
tmp_table_size = 64M max_heap_table_size = 64M sort_buffer_size = 4M read_buffer_size = 4M
- 這幾個參數可以根據實際負載適當調整,但不建議太大,否則每個連接占用太多內存會影響并發能力。
5. 日志文件相關設置
默認的日志文件大小可能偏小,頻繁刷寫會影響性能。
- 調整 redo log 文件大小:
innodb_log_file_size = 256M innodb_log_buffer_size = 16M
- 較大的 innodb_log_file_size 可以減少 checkpoint 次數,提高寫入性能。
- 注意:修改該參數需要重啟,并且第一次啟動時會重建日志文件。
基本上就這些基礎配置層面的優化了。不是特別復雜的場景下,把這些項設置合理,MySQL 的性能會有明顯提升。有些參數需要根據實際負載不斷微調,不要一開始就設得太高,容易適得其反。