1. 程式人生 > >從SQL Server CloudDBA 看雲資料庫智慧化

從SQL Server CloudDBA 看雲資料庫智慧化

最近阿里雲資料庫SQL Server在控制檯推出了CloudDBA服務,重點解決資料庫效能優化領域問題,幫助客戶更好的使用好RDS資料庫,這是繼MySQL之後第二個關係型資料庫提供類似的服務。

 

資料庫可認為是系統執行的關鍵,因為它儲存資料,確保事務一致性,是企業的核心資產。一般大型企業都有專職的資料庫管理員(DBA)來負責資料庫的日常運維管理,這些管理工作的好壞其實非常依賴於DBA的經驗。一個好的DBA,至少要負責如下幾個方面的工作:

1. 基礎運維管理工作:包括安裝、解除安裝、升級、打patch、基礎聯通配置等方面的工作。

2. 安全管理工作:防火牆、連線管理、密碼管理、許可權管理等。要特別說明下,千萬不要小看安全管理工作,如密碼管理,看似是個簡單的問題,但是實際中有很多DBA設定資料庫的密碼是非常簡單的數字,這樣基本上黑客就可以利用撞庫的方式獲取到你的密碼。同樣地很多程式為了圖方便、甚至包括DBA,都直接拿sa賬號作為業務賬號使用,這可謂完全沒有安全意識,尤其是SQL Server資料庫,個人認為這樣的DBA是應該要被開除的。

3. 穩定性管理工作:如搭建高可用環境並且定期演練,備份和恢復其實既屬於安全也屬於穩定性相關工作,並不代表備份的結果肯定能恢復出來的,恢復過程的時效如何都是需要反覆演練的,所以一個好的DBA會讓公司業務行雲流水,沒有異常、或者異常期間處理有節有奏是一個DBA優秀素質的體現。

4. 效能優化管理工作:這是一個非常大的課題,涵蓋了DBA理解資料庫的方方面面,也是DBA綜合素質的直接體現,不同的DBA在這塊的處理結果會給業務帶來直接不同的效果,因此效能優化話題永遠是DBA圈的熱門話題,各種語句寫法、各種索引使用技巧、各種資訊分析排查充分體現了經驗的豐富度。這塊內容重要性的直接體現,就是對資料庫使用效能,做的好可以為公司節省一大筆錢。之前本人在公司作為DBA服務的時候,衡量是否稱職的標準,是否對資料庫每日三餐,即在早上、下午下班前、夜裡高峰時,檢視下資料庫的效能包括,並且給出診斷意見,這件事情不做,基本上算是在偷懶了。

5. 資料管理和業務邏輯處理工作:這是一塊繁重的工作,DBA除了支援日常業務研發的表、資料等變更需求外,有些場景還需要DBA編寫儲存過程、資料庫函式等來完成,這裡的DBA其實是半個開發了。

 

在雲時代,阿里雲提供的關係型資料庫服務(RDS)解放了大量繁重的DBA日常工作,包括基礎運維管理的瑣事、穩定性管理、安全管理等多個方面都有涉及,同時雲上資料庫資料管理工具DMS提供了視覺化的資料管理介面,方便DBA日常資料管理,大大提升了效能。但是雲資料和傳統自建機房的自建資料庫是一樣的,它們一直都是在執行的,它們在執行過程中會遇到很多問題的,我暫且統稱為“執行態管理工作”,主要包含的就是效能優化相關的管理工作,而也是基於此考慮在2017年阿里雲資料庫推出了CloudDBA服務,首先服務於MySQL引擎。一年以後,SQL Server 版 CloudDBA正式釋出,標誌著阿里雲資料庫已經開始多引擎內建“執行態管理”功能,重點是效能優化、當然也會涉及到監控管理、安全管理等和執行有關的部分。

 

為了表述方便,我將以SQL Server CloudDBA作為藍本來闡述阿里雲資料庫CloudDBA產品思路和它集中要解決的問題是什麼。

CloudDBA設計之初就是希望能夠幫助客戶更好的用好雲資料庫,因為阿里雲有數十萬資料庫例項,幾乎遇到所有的客戶使用場景,大量的案例沉澱,以及阿里雲資料庫專家積年累月的大量經驗,我們希望將這些內容能夠通過系統的方式智慧的賦能給客戶,因此CloudDBA首先是智慧化的,或者流行的說法是AI的。其次,我們希望能夠站在使用者面來看待解決問題的方式,也就是以此從看問題、解決問題、智慧修復問題三個角度來幫助客戶。看問題的目標就是要將資料庫的相關資訊全部展現給使用者,並且要努力做到一眼就能發現問題;解決問題的做法是將阿里雲資料庫專家處理這類問題的方法建議,形成指令碼提供給使用者,使用者根據建議指令碼去資料庫執行就能解決問題;至於智慧修復問題,是CloudDBA的終極服務狀態,系統會智慧識別問題點,然後自動啟動內部免疫系統直接去修復此類問題,舉個例子針對異常高峰和客戶的設定,直接在代理層控制異常SQL的流量來自動保護資料庫。因此CloudDBA是個體系化的系統,它不僅僅是資料庫裡面hack一個小元件,下圖就是CloudDBA的基礎元件描述圖。

 

35e985541099aa8bc7054140191f9c2356e511c9

 

CloudDBA底層依賴於阿里雲採集的大量資料庫執行態資料,涵蓋資料庫引擎的執行資料,業務SQL語句,OS執行資料,主機資料和從應用到資料庫的全鏈路資料,然後整合資料,以不同的引擎為業務場景服務。特別要介紹的就是規則引擎,這裡面沉澱了阿里雲數十萬的執行案例,它是不斷完善和進化,資料會不停的補充進去。另外,智慧化的自治系統是CloudDBA對外服務的終極狀態,它會在背後默默為客戶修復資料庫的問題,甚至在問題未發生時候就完成修復。

 

具體解決哪些實際的問題?如果是一位資深DBA可能會依據自己的經驗列出一二三,一個新DBA的話可能就無法準確回答了。而我們做產品優先去解決客戶哪些問題,是依據於多年資料而來的,在我們對外服務中,由於雲資料庫已經很好的解決了資料庫基礎運維工作,資料庫執行中CPU使用率過高、IOPS過高、查詢語句效能底下(返回很慢)、應用超時卡頓、空間異常等佔雲資料庫執行問題95%。SQL Server CloudDBA本版本優先解決此類問題,你可以很輕鬆的:

1. 依層次管理和檢視空間問題,從例項到資料庫到表甚至到索引,幫助有效規劃空間,除了能夠及時解決問題外,有效的利用空間也能夠降低成本。

2. 效能的殺手和利器都是索引,為此我們專門對缺失索引、索引利用率、索引碎片等設定了專門模組,使用者可以輕鬆的發現缺失哪些索引,哪些索引利用率不高綜合考慮可以刪除,哪些索引碎片太多影響效能,正常情況採取SQL Server CloudDBA的建議,效能會帶來急速提升。

3. 統計資訊:統計資訊的好壞,直接關係到底層引擎選擇執行 SQL 語句的最佳路徑,根據建議及時更新優化統計資訊,可始終保障資料庫處於最優狀態,未來這塊功能會優先走向自治,徹底解除人工干預的煩惱。

4. SQL 語句:包含了當前例項的SQL語句執行情況,以及歷史SQL語句的執行情況,歷史SQL語句來自SQL審計日誌,記錄的資訊更全面。SQL語句從多個維度將TOP SQL展示給使用者,如包括CPU開銷、執行時間、返回行、邏輯讀、物理讀、邏輯寫等。以此根據建議優化SQL語句,就能很好的提高效能。

 

深入解讀下CloudDBA的輸出展示,從客戶資源使用視角展示優化項(如空間管理、SQL語句),每個優化項頁面,頭部是概覽資訊方便使用者急速判斷是否有問題是否需要優化、中間是形象化的圖資訊從比較巨集觀的角度展示本優化項的各方面資訊,最後一部分則包含一個更細粒度的表格,具體的詳情都在表格中列出來,如空間管理中列出具體資料的空間使用情況,使用者點選進去還能看到具體資料檔案的空間使用情況,而且針對每專案都提供對應的解決方案,如缺失索引中直接給出要建立索引的SQL語句,使用者只需要在維護時間段執行對應的語句就可以完成優化。未來會引入命令執行系統,使用者只要同意執行,後臺就會自動按指令執行,大大簡化操作流程。

另外,在SQL Server CloudDBA中引入了一個貼心功能,儲存成pdf,可以迅速將本優化專案頁儲存成一份pdf檔案,方便傳閱分享。

 

SQL Server CloudDBA以使用者視角,提供專家級建議方案,以幫助使用者最優的使用好雲資料,這是產品的源動力。