天天看點

CloudDBA最佳實踐-TOP SQL優化分析資料庫性能問題

    雲資料庫<b>CloudDBA</b>診斷報告的<b>TOP SQL優化</b>是非常實用的功能,我們可以通過TOP SQL去診斷資料庫中各種問題,比如性能出現下降,資料庫壓力出現波動,下面介紹兩個線上生産案例。

    最近在協助使用者進行系統重構,RDS測試選型自然成為了本項目的一個重點,但是使用者在測試不同規格的時候發現大規格的執行個體性能居然不如小規格,4C32G規格性能比8C64G規格高出10%,其性能監控也是非常的正常,4C32G規格是8C64G規格資源消耗的一半,TPS也是相當,那問題到底出現在那裡?

    CPU消耗對比:

CloudDBA最佳實踐-TOP SQL優化分析資料庫性能問題
CloudDBA最佳實踐-TOP SQL優化分析資料庫性能問題

    TPS監控:

CloudDBA最佳實踐-TOP SQL優化分析資料庫性能問題
CloudDBA最佳實踐-TOP SQL優化分析資料庫性能問題

    從監控上沒有看出端倪後,我們懷疑使用者的業務測試模型可能不一緻,是以采取分析SQL審計日志來分析問題,把top sql拿出來對比就可以一目了然問題的所在,是以重新開啟壓測,使用我們的CloudDBA來分析SQL日志,結果讓人大吃所驚,一條truncate 語句映入眼:

    8C64G規格:

CloudDBA最佳實踐-TOP SQL優化分析資料庫性能問題

    4C32G規格:

CloudDBA最佳實踐-TOP SQL優化分析資料庫性能問題

    可以看到truncate 語句在8C64G的規格中執行慢了30秒左右,這個時間恰好是整個測試相差的時間,為什麼規格越大反而DDL truncate越慢?這是因為DDL語句在執行的過程中會去掃描記憶體中的髒頁,是以記憶體越大髒頁越多,DDL的執行時間則會越長,是以問題得以水落石出,我們可以調整資料庫記憶體的髒頁比例來緩解DDL過慢的問題。在這次問題排查中使用了很重要的SQL審計日志來發現兩個執行個體規格的性能差異,在成千上萬的SQL日志中,TOP SQL功能将所有的SQL進行收集分析,按照各種次元進行統計,幫助管理者很友善的找到問題根源所在。

    問題表現:

客戶的資料庫每隔半個小時出現壓力抖動,需要查明什麼原因引起。

CloudDBA最佳實踐-TOP SQL優化分析資料庫性能問題
CloudDBA最佳實踐-TOP SQL優化分析資料庫性能問題

    從上圖可以看到該資料庫的cpu壓力出現來定時的抖動,檢視資料庫的緩存請求次數也是有定時的抖動。在這種情況下,由于資料的壓力是定時出現的,是以可以在下一個定時時間點,通過show processlist進行檢視資料庫中有什麼SQL在運作,但是這些SQL都運作非常快,根本看不到是什麼SQL。這個時候需要分析審計日志,審計日志中包括來所有的SQL,是以選擇某個高峰時間段的診斷報告:選擇7:00~7:05和7:10~7:15兩個時間段發現抖動的SQL。

    高峰時間段7:00~7:05

CloudDBA最佳實踐-TOP SQL優化分析資料庫性能問題

    高峰後時間段:7:10~7:15

CloudDBA最佳實踐-TOP SQL優化分析資料庫性能問題

    通過審計日中中TOP SQL按照執行次數最多的排序,我們可以清楚的發現出現抖動的SQL執行次數從99159次降低到25331次,最終定位該SQL是某個定時任務調用導緻。

    阿裡雲CloudDBA診斷報告TOP SQL功能将資料庫審計日志按照各種統計次元,包括執行次數,執行時間,掃描行數進行彙總排序,清晰明了的将資料庫的壓力進行分解,幫助系統管理者簡單友善的排查資料庫的各種問題。

    您可能還喜歡:

<a href="https://yq.aliyun.com/articles/198102?spm=5176.100239.blogcont215469.23.BNuTeo" target="_blank">曆年雙11實戰經曆者:我們是如何做資料庫性能優化及運維-CloudDBA和天象</a>

<a href="https://yq.aliyun.com/articles/218442?spm=5176.100239.blogcont215469.24.q2EqSV" target="_blank">CloudDBA初體驗:SQL優化建議</a>

<a href="https://yq.aliyun.com/articles/215469?spm=5176.8091938.0.0.fnUEUi" target="_blank">阿裡雲資料庫CloudDBA智慧解決資料庫性能優化和問題診斷難題</a>