read_buffer_size 控制順序掃描請求的讀入緩衝區大小。頻繁全表掃描且性能不佳時,可適當增大。
key_buffer_size + (read_buffer_size + sort_buffer_size) * max_connections = 總內存佔用
| 服務器內存 | 推薦 read_buffer_size | 備註 |
|---|---|---|
| 16GB | 1M - 2M | 通用配置 |
| 32GB | 2M - 3M | 專用數據庫服務器 |
-- 原配置問題 sort_buffer_size = 32M -- 過大,建議 8M read_buffer_size = 32M -- 過大,建議 8M read_rnd_buffer_size = 16M -- 過大,建議 8M table_open_cache = 512 -- 過小,建議 2048 max_allowed_packet = 5M -- 過小,建議 16M tmp_table_size = 64M -- 過小,建議 2G innodb_buffer_pool_size = 3000M -- 過小,建議 60%-80% 物理內存 innodb_additional_mem_pool_size = 20M -- 過小,建議 128M -- 缺失關鍵參數 join_buffer_size = 8M -- 必須添加,關鍵 JOIN 優化
mmap() 而非 malloc(),效率下降技術參考: MySQL sort_buffer_size 深度解析