資料庫例項效能調優利器: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數量均等的活躍會話數。
因此,我們可以用RDS資料庫系統中,平均活躍會話(AAS)數與MaxVcores數的量化對比,做為判定系統是否存在瓶頸的重要依據。
Performance Insights能做什麼
阿里雲RDS Performance Insights能夠幫助我們的使用者快速方便、直接了當的發現資料庫例項負載,以及導致效能問題的SQL語句。目前Performance Insights頁面以三個方面承載我們的產品思路:
關鍵效能指標趨勢圖:關鍵資源利用率變化趨勢圖。
實時AAS變化趨勢圖:資料庫例項中平均活躍會話(Average Active Sessions)實時變化趨勢。
多維負載資訊:展示多維度例項負載資訊。
關鍵資源利用率趨勢圖
阿里雲RDS Performance Insights關鍵效能指標的趨勢圖,可以從宏觀的角度幫助客戶發現例項負載的來源,比如:到底是CPU資源吃緊,IOPS過高?還是網路開銷過大,又或是活躍連線數打滿?
實時AAS變化趨勢圖
從關鍵資源利用率趨勢圖部分,我們已經大致清楚了例項負載的來源。接下來,帶著這個問題,我們去看看目前例項中活躍會話的資源等待情況。那麼,此時我們可以來到頁面的第二個部分:實時AAS變化趨勢圖。
從Performance Insights中的實時AAS變化趨勢圖中,我們可以非常清晰的發現RDS例項中的資源等待情況。比如上圖,我們可以分析出以下重要資訊:
時間10:25 - 10:57之間,平均活躍會話遠遠大於例項CPU Cores數量24(幾個點低於CPU Cores),說明資料庫已經面臨比較大的系統瓶頸。
從AAS變化趨勢圖來看,幾乎是在等待藍色標示的資源,即CPU資源。
由此可見,我們使用Performance Insights中的實時AAS變化趨勢圖,可以非常清晰簡單,直接了當的找到使用者RDS例項負載來源,資源等待於何時、何處,以及變化規律。
多維度負載詳情
通Performance Insights中的實時AAS變化趨勢圖,掌握了例項負載來源,資源等待及變化規律,接下來使用者理所應當最關心的一個問題便是:到底導致這些例項負載的具體查詢語句是什麼?哪個使用者導致的?哪個連線主機客戶端?哪個應用資料庫?這一系列的問題我們可以使用多維負載資訊部分來解答。
從以上截圖的下半部分,我們可以方便的找出與AAS變化趨勢關聯的負載對應的SQL查詢語句,以及每個語句對AAS的貢獻的對比情況。當然,您也可以根據自己的需要切換為Waits,Users,Hosts,Commands,Databases和Status,分別表示資源等待,使用者,客戶端主機,命令型別,資料庫,程式狀態等維度檢視。
Performance Insights架構
瞭解阿里雲RDS 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頁面截圖分析出以下幾個問題:
從資源利用率中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截圖,我們可以分析出:
從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是資料庫例項效能調優、負載監控、關聯分析的必備利器,它可以幫助使用者決策從何處下手,何時採取行動,採取何種行動以及智慧化自動解決問題根源。我們有能力有信心可以幫助我們的客戶更好的上好阿里雲,用好阿里雲。
**在雲棲
與技術大神不期而遇**
本文為雲棲社群原創內容,未經允許不得轉載。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69949601/viewspace-2659050/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HBase資料庫效能調優OW資料庫
- 掌握Oracle資料庫效能調優方法Oracle資料庫
- 資料庫效能調優設計方案資料庫
- MySQL調優效能監控之performance schemaMySqlORM
- Oracle資料庫 Exp/Imp工具效能調優Oracle資料庫
- 資料庫效能調優之始: analyze統計資訊資料庫
- 資料庫調優資料庫
- 資料庫效能分析及調整一例(zt)資料庫
- oracle 資料庫例項Oracle資料庫
- 資料庫和例項資料庫
- Spark 效能調優--資源調優Spark
- 資料庫的效能調優:如何正確的使用索引?資料庫索引
- 一文帶你搞懂GaussDB資料庫效能調優資料庫
- 資料庫效能優化資料庫優化
- 單例項資料庫工具轉化多例項資料庫單例資料庫
- 單例項資料庫手工轉化多例項資料庫單例資料庫
- 多例項資料庫刪除例項資料庫
- 資料庫例項 (SQL Server)資料庫SQLServer
- 資料庫設計例項資料庫
- oracle資料庫調優描述Oracle資料庫
- 【效能優化】ORACLE資料庫效能優化概述優化Oracle資料庫
- 【調優】從吞吐量角度提升資料庫整體效能資料庫
- 對oracle例項的記憶體(SGA和PGA)進行調整,優化資料庫性Oracle記憶體優化資料庫
- 如何修改資料庫例項及資料庫名資料庫
- oracle資料庫的效能調整Oracle資料庫
- 資料庫效能優化2資料庫優化
- Oracle資料庫效能優化Oracle資料庫優化
- 為資料庫效能調優插上 AI 的翅膀 | 調優測試框架 Matrix 團隊訪談資料庫AI框架
- mongodb關閉資料庫例項MongoDB資料庫
- oracle資料庫例項狀態Oracle資料庫
- Oracle例項和Oracle資料庫Oracle資料庫
- 建立ASM例項和資料庫ASM資料庫
- oracle資料庫與oracle例項Oracle資料庫
- 如何對分散式 NewSQL 資料庫 TiDB 進行效能調優分散式SQL資料庫TiDB
- oracle資料庫建立資料庫例項-九五小龐Oracle資料庫
- RAC資料庫恢復到單例項資料庫資料庫單例
- 4 管理資料庫例項和叢集資料庫資料庫
- Spark效能調優——9項基本原則Spark