[client]
port = 3306
[mysql]
default-character-set = gbk
[mysqld]
port = 3306
basedir = "D:/web/mysql/"
datadir = "D:/web/mysql/Data/"
default-character-set = gbk
default-storage-engine = MYISAM
# 連接與執行緒
max_connections = 1910
thread_cache_size = 64
thread_concurrency = 16
back_log = 500
max_connect_errors = 30000
wait_timeout = 120
interactive_timeout = 120
# 緩衝區
key_buffer_size = 256M
sort_buffer_size = 208K
read_buffer_size = 64K
read_rnd_buffer_size = 256K
join_buffer_size = 8M
tmp_table_size = 32M
max_heap_table_size = 32M
table_cache = 64
# 查詢快取 (唯讀才開)
query_cache_type = 1
query_cache_size = 64M
query_cache_limit = 2M
# MyISAM 專用
myisam_sort_buffer_size = 8M
skip-bdb
skip-locking
skip-innodb
# 封包與安全
max_allowed_packet = 2M
local-infile = 0
# 錯誤日誌
log-error = mysql_error.log
# 一般查詢日誌 (生產慎開)
# log = mysql_general.log
# 慢查詢日誌 (強烈建議開啟)
log-slow-queries = mysql_slow.log
long_query_time = 2
# 更新日誌 (舊版)
# log-update = mysql_update.log
# 二進制日誌 (複制/時間點恢復必開)
log-bin = mysql-bin
ft_min_word_len = 1
原理:MySQL 預設 ft_min_word_len=4,中文詞多為 1-2 字,導致全文索引失效。設為 1 可索引單字。
生效步驟:
ALTER TABLE t DROP INDEX ft_idx, ADD FULLTEXT ft_idx (col); 或 REPAIR TABLE t QUICK;。
LIKE '%關鍵字%' 無法用索引,全表掃描,10 萬行即秒級,併發即掛。# Windows
net stop mysql
net start mysql
# 或 服務管理器 → MySQL → 重新啟動
# Linux
service mysqld restart
| 參數 | 調整依據 |
|---|---|
| max_connections | 應用連線池上限 + 預留 |
| key_buffer_size | MyISAM 索引總量 + 內部臨時表,勿超實體記憶體 30% |
| query_cache_size | 寫入頻繁設 0,唯讀才開 64M~256M |
| sort_buffer_size | 每連接,過大反而增加記憶體壓力,256K~2M 適中 |
| tmp_table_size | 配合 max_heap_table_size,超過轉磁碟臨時表 |
此模板經實測於日 PV 20 萬環境穩定運行,可作為 MySQL 5.0 產線基準配置。