數據庫實例性能調優利器-Performance Insights最佳實踐

Performance Insights是什麼

阿里雲RDS Performance Insights是RDS CloudDBA產品一項專一於用戶數據庫實例性能調優、負載監控和關聯分析的利器,以簡單直觀的方式幫助用戶迅速評估數據庫負載,資源等待的源頭和對應SQL查詢語句,以此來指導用戶在什麼時候、何處、採起何種行動進行數據性能優化。前端

幾個名詞解釋數據庫

Performance Insights:中文翻譯過來叫性能洞察。性能優化

Active Session (AS):RDS數據庫系統中,活躍的會話數量。網絡

Average Active Session (AAS):一段時間內,RDS數據庫中平均活躍會話數量。架構

Max Vcores:RDS數據庫實例最大可使用到的CPU Cores數量。併發

AAS和MaxVcores來量化系統瓶頸性能

在文章開始,咱們但願可以把一個很是重要的問題解釋清楚:爲何可使用AAS (平均活躍會話數)與RDS數據庫實例MaxVcores量化對比來做爲系統瓶頸的判斷依據?咱們的理由是:優化

首先,RDS數據庫系統中,咱們認爲最爲重要的資源是CPU資源,由於其餘全部資源都須要CPU來調度。阿里雲

其次,CPU的併發處理能力,與CPU Cores的數量相關。假設在至關小的一個時間切片上,CPU對活躍會話(AS)處理能力瓶頸就是CPU Cores數量。即:CPU最多同時可以處理與Cores數量均等的活躍會話數。spa

所以,咱們能夠用RDS數據庫系統中,平均活躍會話(AAS)數與MaxVcores數的量化對比,作爲斷定系統是否存在瓶頸的重要依據。

Performance Insights能作什麼

阿里雲RDS Performance Insights可以幫助咱們的用戶快速方便、直接了當的發現數據庫實例負載,以及致使性能問題的SQL語句。目前Performance Insights頁面以三個方面承載咱們的產品思路:

  • 關鍵性能指標趨勢圖:關鍵資源利用率變化趨勢圖。
  • 實時AAS變化趨勢圖:數據庫實例中平均活躍會話(Average Active Sessions)實時變化趨勢。
  • 多維負載信息:展現多維度實例負載信息。

關鍵資源利用率趨勢圖

阿里雲RDS Performance Insights關鍵性能指標的趨勢圖,能夠從宏觀的角度幫助客戶發現實例負載的來源,好比:究竟是CPU資源吃緊,IOPS太高?仍是網絡開銷過大,又或是活躍鏈接數打滿?

數據庫實例性能調優利器-Performance Insights最佳實踐

 

實時AAS變化趨勢圖

從關鍵資源利用率趨勢圖部分,咱們已經大體清楚了實例負載的來源。接下來,帶着這個問題,咱們去看看目前實例中活躍會話的資源等待狀況。那麼,此時咱們能夠來到頁面的第二個部分:實時AAS變化趨勢圖。

數據庫實例性能調優利器-Performance Insights最佳實踐

 

從Performance Insights中的實時AAS變化趨勢圖中,咱們能夠很是清晰的發現RDS實例中的資源等待狀況。好比上圖,咱們能夠分析出如下重要信息:

  • 時間10:25 - 10:57之間,平均活躍會話遠遠大於實例CPU Cores數量24(幾個點低於CPU Cores),說明數據庫已經面臨比較大的系統瓶頸。
  • 從AAS變化趨勢圖來看,幾乎是在等待藍色標示的資源,即CPU資源。

因而可知,咱們使用Performance Insights中的實時AAS變化趨勢圖,能夠很是清晰簡單,直接了當的找到用戶RDS實例負載來源,資源等待於什麼時候、何處,以及變化規律。

多維度負載詳情

通Performance Insights中的實時AAS變化趨勢圖,掌握了實例負載來源,資源等待及變化規律,接下來用戶理所應當最關心的一個問題即是:到底致使這些實例負載的具體查詢語句是什麼?哪一個用戶致使的?哪一個鏈接主機客戶端?哪一個應用數據庫?這一系列的問題咱們可使用多維負載信息部分來解答。

數據庫實例性能調優利器-Performance Insights最佳實踐

 

從以上截圖的下半部分,咱們能夠方便的找出與AAS變化趨勢關聯的負載對應的SQL查詢語句,以及每一個語句對AAS的貢獻的對比狀況。固然,您也能夠根據本身的須要切換爲Waits,Users,Hosts,Commands,Databases和Status,分別表示資源等待,用戶,客戶端主機,命令類型,數據庫,進程狀態等維度查看。

Performance Insights架構

瞭解阿里雲RDS Performance Insights可以作什麼之後,讓咱們來看Performance Insights的設計架構圖,簡要歸納爲五個字:四層兩鏈路。

數據庫實例性能調優利器-Performance Insights最佳實踐

 

四層架構

RDS Performance Insights四層架構從上往下,依次爲:

  • 應用層:前端用戶可見,承載着咱們產品的思路和邏輯,是終端用戶可見的產品呈現。
  • 服務層:各系統API協調工做,爲應用層提供應用數據服務,咱們產品主要的業務邏輯處理層。
  • 數據層:數據實時處理平臺,統計彙總,數據扁平化,實時計算,最終持久化到元數據庫中,爲服務層提供數據。
  • 採集層:從RDS實例中,採集有價值的基礎數據,爲數據層輸入數據。

兩條鏈路

從數據鏈路來看Performance Insights,有兩條鏈路:

  • 訪問鏈路:數據至上而下請求訪問,至下而上的數據返回。
  • 採集鏈路:數據從生產到消費,從統計彙總到最終落庫整個生命過程。

典型案例

如下兩個典型案例,來看看Performance Insights如何一目瞭然,一針見血的幫助咱們診斷分析數據庫系統瓶頸,資源等待和SQL查詢語句。

  • 爲何CPU 100%了
  • XXX時間點SQL查詢變慢了

爲何CPU 100%了?

在咱們多年的專家服務過程當中, 遇到最多的用戶問題即是「爲何個人CPU 100%了」,來看看Performance Insights是如何庖丁解牛這個問題。

Performance Insights截圖

如下是該RDS實例,Performance Insights頁面截圖。

數據庫實例性能調優利器-Performance Insights最佳實踐

 

分析

咱們從Performance Insights頁面截圖分析出如下幾個問題:

  • 從資源利用率中CPU使用率和活躍會話數量來看:大概在 09:59 - 10:05,均有大幅上升。CPU使用率達到了100%,活躍會話(Active Sessions)達到了400+;
  • AAS變化趨勢中發現,這段時間內,系統瓶頸主要集中在CPU和Lock兩資源的等待,總的Active Sessions數遠遠超過CPU Cores(實例的CPU Cores爲16),存在嚴重的系統瓶頸。
  • SQL語句詳情部分:很是清晰的看到排在第一位的SQL查詢語句是等待CPU資源,達到了96個活躍會話;第二位是Lock資源等待,達到了79個會話,能夠點擊SQL語句,查看詳情。

XXX時間點SQL查詢變慢了

另外,用戶常常遇到的一個問題是「爲何個人SQL查詢語句忽然變慢了」?

Performance Insights截圖

某RDS實例用戶反饋在16:05左右,本來執行很快的Update語句,忽然變得很慢,16:08左右恢復正常,如下是該RDS實例Performance Insights頁面截圖。

數據庫實例性能調優利器-Performance Insights最佳實踐

 

分析

從Performance Insights截圖,咱們能夠分析出:

  • 從AAS變化趨勢圖中,發現大約從16:05:50秒開始,系統出現了大量等待Lock資源的活躍會話(圖中橙色顏色區域),達到了33個,遠超CPU Cores數。
  • 從截圖最下部分SQL查詢中,發現等待Lock資源的SQL語句(第一條,橙色標示),恰巧是用戶抱怨變慢的Update操做語句。因而咱們能夠很快判定,這個Update變慢的緣由是資源被鎖住,致使等待鎖資源釋放時間過長,拉長了執行時間,即Update語句變慢了。
  • 從AAS變化趨勢圖中,發現大約在16:07:20左右,等待鎖資源的活躍進程消失了,Update語句性能恢復正常,說明鎖資源已經釋放。

以上,咱們從兩個特定的用戶案例能夠看到Performance Insights能夠簡單直觀,輕鬆愉悅的幫助用戶診斷問題,關聯分析系統瓶頸,資源等待和SQL查詢,取得了很是好的效果。

Performance Insights的將來

伴隨阿里雲RDS Performance Insights第一期發佈,咱們已經能夠幫助用戶快速發現RDS實例性能問題,以及致使性能問題的具體SQL查詢。可是,這遠遠不夠,咱們還須要更深刻的幫助咱們的客戶自動化、智能化解決問題。

從「是什麼」到「爲何」

當前,用戶經過阿里雲RDS Performance Insights找到了致使性能問題的具體查詢SQL語句後,接下來很天然的一個問題是,爲何這個查詢語句會致使性能問題?是缺失必要的索引?統計信息數據傾斜?查詢數據類型轉換?Non-SARG查詢等等?接下來,咱們須要深刻探索爲何SQL會致使性能問題。

從「爲何」到「怎麼辦」

當用戶知道了SQL語句爲何有性能問題之後,接下來的問題即是:我該怎麼作才能解決性能問題?咱們須要明確告訴用戶怎麼辦就可以解決性能問題。

從「怎麼辦」到「自動辦」

隨着用戶可以解決SQL語句性能問題之後,用戶接下來最爲迫切的需求即是:阿里雲可否幫咱們預先發現、智能化、自動化處理解決這些相似的問題?

以上,即是RDS Performance Insights的產品脈絡,從是什麼到爲何;從爲何到怎麼辦;從怎麼辦到自動辦,層層遞進,步步爲營,一步一步創造客戶愈來愈高的診斷優化需求。

最後總結

阿里雲RDS Performance Insights是數據庫實例性能調優、負載監控、關聯分析的必備利器,它能夠幫助用戶決策從何處下手,什麼時候採起行動,採起何種行動以及智能化自動解決問題根源。咱們有能力有信心能夠幫助咱們的客戶更好的上好阿里雲,用好阿里雲。

做者: 風移

原文連接

本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索