最近阿里雲數據庫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的基礎組件描述圖。
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以用戶視角,提供專家級建議方案,以幫助用戶最優的使用好雲數據,這是產品的源動力。
原文連接
本文爲雲棲社區原創內容,未經容許不得轉載。數據庫