當前位置:網站首頁>【RDS】RDS MySQL/MariaDB TX版實例CPU使用率較高,什麼原因?

【RDS】RDS MySQL/MariaDB TX版實例CPU使用率較高,什麼原因?

2022-01-26 22:32:18 阿裏雲問答

RDS MySQL/MariaDB TX版實例CPU使用率較高,什麼原因?




采納答案1:

應用負載(QPS)高

對於因應用負載高導致CPU使用率高的狀况,使用SQL進行優化的餘地不大,建議您從應用架構、實例規格等方面來處理問題。請參考以下方法:

  • 昇級實例規格,增加CPU資源,詳情請參見變更配置

  • 增加只讀實例,將對數據一致性不敏感的查詢(比如商品種類查詢、列車車次查詢)轉移到只讀實例上,分擔主實例壓力,詳情請參見創建MySQL只讀實例

  • 使用阿裏雲PolarDB-X雲原生分布式數據庫,自動進行分庫分錶,將查詢壓力分擔到多個RDS實例上。

  • 使用阿裏雲雲數據庫Memcache或者雲數據庫Redis,盡量從緩存中獲取常用的查詢結果,减輕RDS實例的壓力。

  • 對於查詢數據比較靜態、查詢重複度高、查詢結果集小於1MB的應用,考慮開啟查詢緩存(Query Cache)。

說明: 能否從開啟查詢緩存(Query Cache)中獲益需要經過測試,具體設置請參見RDS MySQL 版查詢緩存(Query Cache)的設置和使用

  • 定期歸檔曆史數據、采用分庫分錶或者分區的方式减小查詢訪問的數據量。 盡量優化查詢,减少查詢的執行成本,提高應用可擴展性。

慢SQL導致查詢成本高

解决該問題的原則:定比特效率低的查詢、優化查詢的執行效率、降低查詢執行的成本。

1、通過以下方式定比特效率低的查詢:

  • 執行以下SQL語句,查看當前執行的查詢語句。
show processlist;show full processlist;

系統顯示類似如下。 156161344435232_zh-CN.png 查詢時間長、運行狀態為Sending data、Copying to tmp table、Copying to tmp table on disk、Sorting result、Using filesort的查詢會話可能均包含性能問題。

  • 若在QPS高導致CPU使用率高的場景中,查詢執行時間通常比較短,show processlist;命令或實例會話中可能會不容易捕捉到當前執行的查詢。但是您可以通過執行以下SQL語句進行查詢。 explain [$SQL]

  • 您可以通過執行類似kill [$ID];的命令來終止長時間執行的會話,終止會話請參見RDS MySQL 版如何終止會話。關於長時間執行會話的管理,請參見RDS MySQL 版管理長時間運行查詢。 說明:[$ID]為該查詢語句對應的會話ID。

  • 通過數據庫自治服務DAS查看當前執行的查詢:

a.登錄數據庫自治服務控制臺。

b.依次單擊目標實例右側的性能>實例會話。 image.png c.單擊SQL列中的查詢文本,即可顯示完整的查詢和其執行計劃。

2、得到需要優化的查詢語句後,可以通過DMS控制臺上的SQL診斷來獲取優化建議。診斷報告同樣適用於排查曆史實例CPU使用率高的問題:

a.通過DMS控制臺登錄實例。

b.單擊頁面上方的SQL窗口,選擇對應的庫。

c.將查詢語句粘貼到SQL窗口,單擊SQL診斷,即可得到優化建議。 image (1).png

3、根據您實際情况,選擇優化建議進行處理。例如添加索引,確認執行查詢成本會大幅减少。


版權聲明
本文為[阿裏雲問答]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201262232181916.html

隨機推薦