mysql iops_MySQL实例IOPS使用率高的原因和解决方法
問題描述
MySQL實例在日常使用中會出現實例IOPS使用率高的情況,本文將介紹造成該狀況的主要原因和解決方法。
問題原因
實例內存滿足不了緩存數據或排序等需要,導致產生大量的物理IO。
查詢執行效率低,掃描過多數據行。
解決方案
阿里云提醒您:
如果您對實例或數據有修改、變更等風險操作,務必注意實例的容災、容錯能力,確保數據安全。
如果您對實例(包括但不限于ECS、RDS)等進行配置與數據修改,建議提前創建快照或開啟RDS日志備份等功能。
如果您在阿里云平臺授權或者提交過登錄賬號、密碼等安全信息,建議您及時修改。
您可以通過以下任意一種途徑或結合使用兩種途徑來解決IOPS使用率高的問題:
生成實例當前診斷報告,推薦使用該方式。
終止問題查詢。
通過SQL窗口優化功能來優化查詢。
生成實例當前診斷報告(推薦方式)
在DMS控制臺上登錄數據庫。
選擇性能>診斷報告。
單擊發起診斷,即可創建一個針對當前實例運行情況的報告,如下圖所示。
單擊查看報告,查看其中的SQL優化、會話列表、慢SQL匯總部分,如下列圖片所示:
SQL優化
會話列表
慢SQL匯總
根據SQL優化中的建議,做出相應優化。如上述步驟中的情況建議執行ALTER TABLE large_tab_03 ADD INDEX IDX_COL01(COL01)SQL語句,即為在表large_tab_03字段col01上添加索引idx_col01(col01)。
說明:
在SQL優化沒有直接給出建議的情況下,需要結合會話列表和慢SQL匯總的信息進行查詢優化。
建議在業務低峰期進行添加索引操作。如果添加過程中出現等待表元數據鎖的情況,請參見如何解決MDL鎖導致無法操作數據庫的問題。
索引添加完畢后,查詢執行就會快速完成,IOPS使用率即會降低。
終止問題查詢
您可以通過DMS控制臺上的實例會話或命令查詢和終止問題查詢,建議您將物理讀(Physical_sync_read和Physical_async_read)高的查詢終止掉。
說明:
RDS實例在連接數打滿的情況下,無法通過DMS或者MySQL命令行工具連接登錄實例。
如果無法通過DMS或MySQL命令行工具連接,建議您先在RDS控制臺的參數設置中將wait_timeout參數(單位秒)設置為比較小的值(比如60),讓RDS實例主動關閉空閑時間超過60秒的連接,以便稍后可以通過DMS或者MySQL命令行工具連接訪問實例。
通過實例會話終止問題查詢
在實例診斷報告不可用或者無法立刻使用其建議的情況下,可以先通過DMS控制臺上的實例會話來終止問題查詢。
說明:需要應用方面首先停止提交問題查詢,否則會出現不斷終止、不斷出現的情況。
在DMS控制臺上登錄數據庫。
選擇性能>實例會話,顯示結果如下圖所示。
從上圖可以看出,有10個會話在執行以下SQL查詢語句。
select b.*
from perf_test_no_idx_01 a,
perf_test_no_idx_02 b
where a.created_on>= '2015-01-01'
and a.detail= b.detail;
單擊Kill 會話,來終止問題查詢。
通過命令終止問題查詢
通過MySQL命令行工具連接實例。
通過以下方式,查看會話情況,來確定問題會話。
通過執行show processlist;命令查詢,結果如下圖所示。
若當前執行會話比較多,通過執行show full processlist;SQL語句來查詢,結果如下圖所示。
執行kill [$ID]命令,終止相關會話。其中[$ID]為上述步驟查詢結果中的ID列值。
通過SQL窗口優化功能來優化查詢
在DMS控制臺上登錄數據庫。
選擇SQL 操作>SQL窗口。
單擊優化,獲取診斷結果。
根據診斷結果中的建議,來優化查詢,如下圖所示。
適用于
云數據庫RDS MySQL版
如果您的問題仍未解決,您可以在阿里云社區免費咨詢,或提交工單聯系阿里云技術支持。
總結
以上是生活随笔為你收集整理的mysql iops_MySQL实例IOPS使用率高的原因和解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蓝牙耳机怎么连接手机听歌_蓝牙耳机怎么用
- 下一篇: 安装mysql5.5出现1045_安装M