首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

資料庫系統排序優化實戰:從 Load 15 降到 4

     編輯:MySQL 資料庫相關知識

案例背景

淘寶畫報系統採用 MySQL,平時系統負載約 4。因運營推廣導致 PV 飆升,Load 瞬間衝至 15。經排查,問題 SQL 單次排序量僅 20 行,但執行頻率極高,導致用戶態 CPU 佔用率極高。

排查與優化

  1. 透過 SHOW ENGINE INNODB STATUS\G 或慢查詢日誌定位高耗 CPU 的 SQL。
  2. 分析執行計劃,發現缺乏合適索引導致 filesort。
  3. 調整索引(新增覆蓋索引 / 調整順序),使排序走索引順序,避免臨時表與 filesort。

優化成果

User CPU 優化前後對比
圖 1:User CPU 使用率明顯下降

Load 變化曲線
圖 2:系統 Load 從 15 穩定回落至 4 以下

核心啟示

當排序成為系統主要瓶頸時,索引優化效果立竿見影。關鍵點:

  • 避免 ORDER BY 與 WHERE 使用不同索引導致 filesort。
  • 利用覆蓋索引直接返回有序結果。
  • 關注 Sort_merge_passes、Created_tmp_tables 等狀態變量。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved