MySQL實(shí)例IOPS使用率高的原因和解決方法
問題描述
MySQL實(shí)例在日常使用中會(huì)出現(xiàn)實(shí)例IOPS使用率高的情況,本文將介紹造成該狀況的主要原因和解決方法。
問題原因
實(shí)例內(nèi)存滿足不了緩存數(shù)據(jù)或排序等需要,導(dǎo)致產(chǎn)生大量的物理IO。
查詢執(zhí)行效率低,掃描過多數(shù)據(jù)行。
解決方案
您可以通過以下任意一種途徑或結(jié)合使用兩種途徑來解決IOPS使用率高的問題:
生成實(shí)例當(dāng)前診斷報(bào)告,推薦使用該方式。
終止問題查詢。
查看實(shí)例當(dāng)前診斷報(bào)告
在DMS控制臺(tái)上登錄數(shù)據(jù)庫。
選擇性能>一鍵診斷。
在DAS管理控制臺(tái)即可查看實(shí)例的實(shí)時(shí)會(huì)話、死鎖及慢SQL情況。
單擊對(duì)應(yīng)模塊的詳情鏈接,查看做出相應(yīng)優(yōu)化。
終止問題查詢
您可以通過DMS控制臺(tái)上的實(shí)例會(huì)話或命令查詢和終止問題查詢,建議您將物理讀(Physical_sync_read和Physical_async_read)高的查詢終止掉。
RDS實(shí)例在連接數(shù)打滿的情況下,無法通過DMS或者M(jìn)ySQL命令行工具連接登錄實(shí)例。
如果無法通過DMS或MySQL命令行工具連接,建議您先在RDS控制臺(tái)的參數(shù)設(shè)置中將wait_timeout參數(shù)(單位秒)設(shè)置為比較小的值(比如60),讓RDS實(shí)例主動(dòng)關(guān)閉空閑時(shí)間超過60秒的連接,以便稍后可以通過DMS或者M(jìn)ySQL命令行工具連接訪問實(shí)例。
通過實(shí)例會(huì)話終止問題查詢
在實(shí)例診斷報(bào)告不可用或者無法立刻使用其建議的情況下,可以先通過DMS控制臺(tái)上的實(shí)例會(huì)話來終止問題查詢。
需要應(yīng)用方面首先停止提交問題查詢,否則會(huì)出現(xiàn)不斷終止、不斷出現(xiàn)的情況。
在DMS控制臺(tái)上登錄數(shù)據(jù)庫。
選擇性能>實(shí)例會(huì)話。
選中需要結(jié)束的會(huì)話,單擊結(jié)束會(huì)話。
通過命令終止問題查詢
通過MySQL命令行工具連接實(shí)例。
通過以下方式,查看會(huì)話情況,來確定問題會(huì)話。
通過執(zhí)行
show processlist;
命令查詢,結(jié)果如下圖所示。若當(dāng)前執(zhí)行會(huì)話比較多,通過執(zhí)行
show full processlist;
SQL語句來查詢,結(jié)果如下圖所示。
執(zhí)行
kill [$ID]
命令,終止相關(guān)會(huì)話。其中[$ID]為上述步驟查詢結(jié)果中的ID列值。
適用于
云數(shù)據(jù)庫RDS MySQL版