問題描述
MySQL執行個體在日常使用中會出現執行個體IOPS使用率高的情況,本文將介紹造成該狀況的主要原因和解決方案。
問題原因
執行個體記憶體滿足不了快取資料或排序等需要,導致產生大量的物理IO。
查詢執行效率低,掃描過多資料行。
解決方案
您可以通過以下任意一種途徑或結合使用兩種途徑來解決IOPS使用率高的問題:
產生執行個體當前診斷報告,推薦使用該方式。
終止問題查詢。
查看執行個體當前診斷報告
在DMS控制台上登入資料庫。
選擇效能>一鍵診斷。
在DAS管理主控台即可查看執行個體的即時會話、死結及慢SQL情況。
單擊對應模組的詳情連結,查看做出相應最佳化。
終止問題查詢
您可以通過DMS控制台上的執行個體會話或命令查詢和終止問題查詢,建議您將物理讀(Physical_sync_read和Physical_async_read)高的查詢終止掉。
RDS執行個體在串連數打滿的情況下,無法通過DMS或者MySQL命令列工具串連登入執行個體。
如果無法通過DMS或MySQL命令列工具串連,建議您先在RDS控制台的參數設定中將wait_timeout參數(單位秒)設定為比較小的值(比如60),讓RDS執行個體主動關閉空閑時間超過60秒的串連,以便稍後可以通過DMS或者MySQL命令列工具串連訪問執行個體。
通過執行個體會話終止問題查詢
在執行個體診斷報告不可用或者無法立刻使用其建議的情況下,可以先通過DMS控制台上的執行個體會話來終止問題查詢。
需要應用方面首先停止提交問題查詢,否則會出現不斷終止、不斷出現的情況。
在DMS控制台上登入資料庫。
選擇效能>執行個體會話。
選中需要結束的會話,單擊結束會話。
通過命令終止問題查詢
通過MySQL命令列工具串連執行個體。
通過以下方式,查看會話情況,來確定問題會話。
通過執行
show processlist;
命令查詢,結果如下圖所示。若當前執行會話比較多,通過執行
show full processlist;
SQL語句來查詢,結果如下圖所示。
執行
kill [$ID]
命令,終止相關會話。其中[$ID]為上述步驟查詢結果中的ID列值。
適用於
雲資料庫RDS MySQL版