Buffer Pool (BP) 採用 Young/Old 兩段式 LRU:
innodb_old_blocks_pct 控制):新讀入頁面插入點頁面被訪問時會提升至 Young 區頭部。全表掃描(如 mysqldump)會大量讀入冷頁面並立即訪問,若 innodb_old_blocks_time = 0,這些頁面瞬間衝到 Young 區頭部,擠出真正熱數據 → Buffer Pool 污染。
innodb_old_blocks_time| Concurrency | 無備份 QPS | time=0 QPS | time=1000 QPS | 提升幅度 |
|---|---|---|---|---|
| 1 | 17,394 | 1,836 | 2,141 | 16.6% |
| 5 | 83,551 | 8,676 | 15,885 | 83% |
| 10 | 150,365 | 39,034 | 48,925 | 25% |
| 15 | 174,268 | 70,965 | 90,633 | 28% |
| 19 | 175,114 | 93,303 | 120,625 | 29% |
結論:time=1000 並非銀彈,最佳提升集中在中等併發(Old 區邊緣熱度數據)。高併發熱數據搶佔優勢大,低併發冷數據本就靠尾,均受益有限。
innodb_old_blocks_pct 聯動效應pct(如 60%),性能提升波峰右移至 60% 併發位置pct 決定「什麼樣的數據受保護」,time 決定「保護力度」[mysqld]
innodb_old_blocks_time = 1000
innodb_old_blocks_pct = 37 # 默認通常足夠,觀察 BP 命中率再調
配合 innodb_buffer_pool_dump_at_shutdown/load_at_startup 實現熱數據預熱,進一步減少啟動期抖動。