數據管理DMS 全量SQL診斷:你的SQL是健康的藍色,還是危險的紅色?
三大難點問題
使用MySQL資料庫的用戶,不可避免都會遇到下面三個難題:
1、歷史問題難定位
資料庫凌晨3點發生了CPU 100%的告警,但是該時間段卻沒有任何慢SQL,怎麼繼續查找原因?
2、SQL壓測模版難獲取
下周要進行大促壓測,DBA只能找業務方一個個的收集SQL模版、執行頻率,這種方式效率低,並且無法保證正確性;
3、慢SQL是否要優化
不是所有的慢SQL都需要第一優先順序優化,用戶迫切需要知道資料庫上哪些SQL最消耗資源,優化這些SQL,才可以提高實例的穩定性;全量SQL診斷可以快速的解決上述問題。
重要功能簡介
執行耗時分布
如果一個實例的「執行耗時分布」越接近藍色,代表這個實例的SQL健康情況越好,越接近橙色和紅色,代表這個實例的SQL健康情況越差。
「執行耗時分布」展示了選定時間範圍內,所有SQL的執行耗時分布,將執行耗時分為了7個區間,每分鐘計算一次,分別是:
[0,1]ms 滿足0ms ≤ 執行耗時 ≤ 1ms SQL執行次數佔比
(1,2]ms 1ms < 執行耗時 ≤ 2ms SQL執行次數佔比
(2,3]ms 2ms < 執行耗時 ≤ 3ms SQL執行次數佔比
(3,10]ms 3ms < 執行耗時 ≤ 10ms SQL執行次數佔比
(10,100]ms 10ms < 執行耗時 ≤ 100ms SQL執行次數佔比
(0.1,1]s 0.1s < 執行耗時 ≤ 1s SQL執行次數佔比
>1s 1s < 執行耗時 SQL執行次數佔比
例如 :
2017-10-12 19:15:00 該實例 執行耗時在[0,1]ms的SQL執行次數佔比是80%;執行耗時在(3,10]ms的SQL執行次數佔比是13.33%;執行耗時在(0.1,1]s的SQL執行次數佔比是6.67%。執行耗時(SQL RT)
通過執行耗時,可以方便的查看在選定的時間範圍內,每一分鐘 SQL的執行耗時。
SQL列表
SQL列表展示了選定時間範圍內每一類SQL的SQL文本、耗時比例、平均執行耗時、返回行數等信息。
耗時比例=(該類SQL執行耗時 * 執行次數)/(所有SQL執行耗時 * 總執行次數) * 100%
所以耗時比例越高的SQL,基本上可以簡單的理解為佔用MySQL資源越多的SQL,優化該SQL,可以獲取更高的收益比,以下圖的場景為例:
紅框圈定的SQL,平均耗時是67.78ms,執行次數43次,所以耗時比例是67.18%;
黃框圈定的SQL,雖然平均耗時達到209.99ms,但是因為執行次數只有一次,所以耗時比例只有4.84%;
所以在業務模型沒有變化的情況下,優化第一條SQL,可以更好的降低實例的資源使用,提升實例的穩定性;
SQL明細
點擊SQL ID,可以查看該類SQL執行計劃、性能趨勢、SQL樣本:
前提條件
用戶獲取許可權並已登錄DMS控制台。
DMS 全量SQL診斷功能目前不會進行收費,但是使用該功能的前提用戶需要開啟SQL審計,該功能是收費功能,計費標準。
背景信息
目前暫時僅支持雲資料庫 RDS 版 MySQL 實例(暫不支持MySQL 5.7)。
操作步驟
登錄DMS控制台——>選擇MySQL資料庫——>選擇「性能」菜單——>點擊「SQL趨勢」——>點擊「全量SQL診斷」
詳細操作步驟如下:
- 登錄DMS控制台後,界面如下圖所示:
2.選擇MySQL資料庫,並單擊登錄資料庫按鈕進行登錄。
3.如下圖所示,在頂部導航欄菜單中,選擇性能>SQL趨勢:
原文鏈接
更多技術乾貨敬請關注云棲社區知乎機構號:阿里云云棲社區 - 知乎
推薦閱讀:
※python 如何連同依賴打包發布以及python的構建工具?
※mysql是如何工作的?
※如何優化一條 order by 的 SQL 語句?
※PHP高並發下的數據同步的解決方法?