業務背景: DAS(Database autonomy service)為上百萬數據庫實例的穩定運行保駕護航,其中精準定位數據庫運行過程中的異常SQL是DAS最基本的功能。數據庫90%以上的問題都來源於數據庫的異常請求,無論是雙十一的集團海量交易請求行為,還是用戶業務變化的請求行為,每時每刻都影響著數據庫的性能。自動駕駛汽車通過感知路況圖像變化的行為來掌握車的方向,而自動駕駛數據庫通過感知和識別用戶請求行為來不斷修復優化數據庫的各種問題,為雲數據庫保駕護航。如何從海量數據庫中的海量請求定位出不同數據庫引擎不同場景的問題是多年以來困擾DBA的難題。在推薦領域,通過分析用戶的行為習慣代替了機械式網頁展示精準推薦給用戶期望的文字/視頻/產品,提升用戶體驗和產品轉化率,同樣下一代數據庫自動駕駛平臺也需要分析用戶請求行為,用戶開發業務行為,推薦出相應優化修復擴容等操作,提升自動駕駛數據庫的效率,讓數據庫更快更穩更安全。所以從用戶請求行為和業務行為出發,在海量數據庫實例的海量請求中進行數據挖掘是一個非常值得深入研究的課題,同時也是數據庫自動駕駛平臺非常依賴的底層技術能力, 向上支撐DAS數據庫自治服務各個場景的自治能力。 DAS這這些年提供了多個對SQL數據進行分析的L2功能包括:專業版SQL洞察,全量SQL,慢日誌, 一鍵診斷, 鎖分析,會話等。每一個功能沉澱了DBA在不同角度分析不同問題的方法,不同實例,不同業務診斷問題的方法略有不同。對於並不是很熟悉DB運維的用戶來說,DAS在提供一個統一高效簡單的方式去幫助用戶去定位問題。我們結合SQL變慢的多指標特徵,提出一種基於特徵相似度匹配的方法 VLDB 2020 沉澱到自治中心功能當中, 但對於異常SQL中存在的業務屬性的相似性以及錯綜複雜的影響與被影響的關係,理清楚問題SQL與各種資源的異常現象的傳播關係是具有挑戰的問題,DAS團隊仍然在如何找到異常SQL這個課題上繼續進行了研究和探索,在探索的過程中我們提供了一個新的分析功能SQL請求行為識別幫助用戶更好的定位SQL問題。 問題描述: 以下圖為例,實例CPU出現尖刺突增的現象,數據庫有cpu打滿潛在風險,當用戶的請求量較少或者請求的SQL模式較少的時候,通過指標的排序篩選是很容易找到問題SQL的,但當用戶的全量SQL模板超過上萬甚至上億條,用戶通過當前DAS頁面無法快速定位異常SQL,我們需要通過更多數據提供更高效的方式,來定位異常請求。 當用戶使用DAS專業版SQL洞察的功能的時候,即使我們將全量SQL流水,壓縮聚合成模板,模板的數量也是驚人的,我們可以看到大量特徵趨勢相近的模板。所以如果我們根據SQL的請求行為將模板進一步壓縮,這樣用戶可以更好的定位異常SQL的問題 目前DAS產品功能和業界AWS Azure等其他產品都有初步的異常SQL定位能力,通過對採集的SQL數據在各個維度的排序,讓用戶自己定位數據庫問題,這種方式對於80%以上簡單的數據庫問題是有效的,但是在複雜業務場景和DBA都很難定位的數據庫問題效果是很差的。以阿里雲內部管控的元數據庫集群實例為例,今年平均每月發生10多次的CPU打滿問題,全年發生數次性能相關的故障問題,但是每次的問題都不同,有時候DBA只能找到現象,難以快速定位問題根因。所以通過對用戶請求行為的分析,會更好的迭代DAS數據庫自治服務產品,解決我們複雜場景的數據庫性能問題,提高整個數據庫各個引擎的穩定性,易用性,效率。 業界產品: AWS: RDS: Performance Insight 和目前DAS產品功能一樣,採集的數據維度類似,通過Top