全部產品
Search
文件中心

:MySQL執行個體IOPS使用率高的原因和解決方案

更新時間:Feb 28, 2024

問題描述

MySQL執行個體在日常使用中會出現執行個體IOPS使用率高的情況,本文將介紹造成該狀況的主要原因和解決方案。

問題原因

  • 執行個體記憶體滿足不了快取資料或排序等需要,導致產生大量的物理IO。

  • 查詢執行效率低,掃描過多資料行。

解決方案

您可以通過以下任意一種途徑或結合使用兩種途徑來解決IOPS使用率高的問題:

  • 產生執行個體當前診斷報告,推薦使用該方式。

  • 終止問題查詢。

查看執行個體當前診斷報告

  1. 在DMS控制台上登入資料庫

  2. 選擇效能>一鍵診斷image

  3. 在DAS管理主控台即可查看執行個體的即時會話、死結及慢SQL情況。

    image

  4. 單擊對應模組的詳情連結,查看做出相應最佳化。

終止問題查詢

您可以通過DMS控制台上的執行個體會話或命令查詢和終止問題查詢,建議您將物理讀(Physical_sync_read和Physical_async_read)高的查詢終止掉。

說明
  • RDS執行個體在串連數打滿的情況下,無法通過DMS或者MySQL命令列工具串連登入執行個體。

  • 如果無法通過DMS或MySQL命令列工具串連,建議您先在RDS控制台的參數設定中將wait_timeout參數(單位秒)設定為比較小的值(比如60),讓RDS執行個體主動關閉空閑時間超過60秒的串連,以便稍後可以通過DMS或者MySQL命令列工具串連訪問執行個體。

通過執行個體會話終止問題查詢

在執行個體診斷報告不可用或者無法立刻使用其建議的情況下,可以先通過DMS控制台上的執行個體會話來終止問題查詢。

說明

需要應用方面首先停止提交問題查詢,否則會出現不斷終止、不斷出現的情況。

  1. 在DMS控制台上登入資料庫

  2. 選擇效能>執行個體會話

    image

  3. 選中需要結束的會話,單擊結束會話image

通過命令終止問題查詢

  1. 通過MySQL命令列工具串連執行個體。

  2. 通過以下方式,查看會話情況,來確定問題會話。

    • 通過執行show processlist;命令查詢,結果如下圖所示。

      show processlist

    • 若當前執行會話比較多,通過執行show full processlist;SQL語句來查詢,結果如下圖所示。

  3. 執行kill [$ID]命令,終止相關會話。其中[$ID]為上述步驟查詢結果中的ID列值。

適用於

  • 雲資料庫RDS MySQL版