從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的基礎組件描述圖。

從SQL Server CloudDBA 看雲數據庫智能化

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以用戶視角,提供專家級建議方案,以幫助用戶最優的使用好雲數據,這是產品的源動力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章