專案效能優化歷經一週彎路。測試環境:i3-3220、4GB 記憶體、未設定 innodb_buffer_pool_size。1~8 執行緒併發測試下,回應時間隨併發數持續攀升,嚴重偏離高併發預期。
對比同事電腦(i3-4150,其他條件相同),同樣程式碼效能差異巨大。深入比對 my.ini 發現 innodb_buffer_pool_size 設定為 8MB 與 48MB 時效能懸殊。官方文件說明:
InnoDB 使用緩衝池快取索引與列資料。值越大,磁碟 I/O 越少。專用資料庫伺服器可設為實體記憶體 80%。32 位元系統受限於 2-3.5GB 使用者空間,勿設過大。
經大量測試,以下配置在高併發讀寫、InnoDB 表場景下效能最優:
innodb_buffer_pool_size=2G
innodb_buffer_pool_instances=1
驗證結果:20 個商品各下 1000 單,平均回應時間穩定在 55ms,遠優於調整前。
innodb_buffer_pool_size 是 InnoDB 高併發效能的核心參數,直接影響磁碟 I/O 頻率innodb_buffer_pool_instances 通常設為 1 即可,除非極大記憶體需分割減少鎖競爭