標籤:
來源:http://bbs.aliyun.com/read/160831.html?spm=5176.7189909.0.0.0thneM&displayMode=1&page=1&toread=1#tpc
想必,大家都非常關心這個問題吧? 6psK2d0
關於RDS執行個體cpu 超過100%,偶爾出現卡住的現象。通常這種情況都是由於sql 效能問題導致的,下面我來分析下。
原理:cpu 消耗過大通常情況下都是有慢sql 造成的,這裡的慢sql 包括全表掃描,掃描資料量過大,記憶體排序,磁碟排序,鎖爭用等待等;
表現現象:sql 執行狀態為:sending data,Copying to tmp table,Copying to tmp table on disk,Sorting result,locked;
解決方案:使用者可以登入到rds,通過show processlist查看當前正在執行的sql,當執行完show processlist後出現大量的語句,通常其狀態出現sending data,Copying to tmp table,Copying to tmp table on disk,Sorting result, Using filesort 都是sql有效能問題;
A.sending data表示:sql正在從表中查詢資料,如果查詢條件沒有適當的索引,則會導致sql執行時間過長;
B.Copying to tmp table on disk:出現這種狀態,通常情況下是由於臨時結果集太大,超過了資料庫規定的臨時記憶體大小,需要拷貝臨時結果集到磁碟上,這個時候需要使用者對sql進行優
C.Sorting result, Using filesort:出現這種狀態,表示sql正在執行排序操作,排序操作都會引起較多的cpu消耗,通常的最佳化方法會添加適當的索引來消除排序,或者縮小排序的結果集;
通過show processlist發現的sql語句的問題及解決方案由於篇幅太長,請移步《降低CPU使用率案例分析》
【轉】【RDS教程】專業DBA速成 - CPU最佳化篇