用一個Gaussdb的例子探討一下指標(biāo)波動的關(guān)聯(lián)性
數(shù)據(jù)庫系統(tǒng)是一個十分神奇的系統(tǒng),我們以前習(xí)慣于監(jiān)控某個指標(biāo)是否出現(xiàn)了異常。不過單一指標(biāo)的波動與異常往往很難定位故障或者問題。不同的應(yīng)用系統(tǒng)中,指標(biāo)之間的關(guān)聯(lián)度會有很大的差異。如果在類似業(yè)務(wù)場景,類似的負(fù)載情況下,數(shù)據(jù)庫的指標(biāo)波動與相互影響還是具有一定的相似性的。這也是智能化運(yùn)維的算法具有一定的普適性應(yīng)用范圍的理論基礎(chǔ)。
我們探究指標(biāo)后面的復(fù)雜關(guān)系是為了分析問題時能夠盡快抓住要點(diǎn),從而避開錯誤的路徑分叉,直擊問題的根源于本質(zhì)。因此我們對數(shù)據(jù)庫的指標(biāo)體系理解的越為深刻,分析問題的能力也就越強(qiáng)。在二十多年的Oracle數(shù)據(jù)庫運(yùn)維工作中,我就是通過不斷的理解指標(biāo)與指標(biāo)后面的復(fù)雜關(guān)聯(lián)關(guān)系,再結(jié)合Oracle數(shù)據(jù)庫內(nèi)部原理與基礎(chǔ)概念,去不斷的提升自己的分析問題的能力的。
接下來我們來看一個例子,這個例子來自于一套負(fù)載比較高的Gaussdb數(shù)據(jù)庫系統(tǒng),這套數(shù)據(jù)庫的配置比較豪華,有6個CN節(jié)點(diǎn),12個DN節(jié)點(diǎn),運(yùn)行于華為云上,每個CN節(jié)點(diǎn)配置了16個CPU核心。Gaussdb的CN是采用負(fù)載均衡的模式接受來自應(yīng)用的負(fù)載的,這套應(yīng)用系統(tǒng)是十分典型的后臺交易型業(yè)務(wù),大部分業(yè)務(wù)負(fù)載來自于前端過來的流式交易數(shù)據(jù)。數(shù)據(jù)庫是均勻分區(qū)在多個DN上的,應(yīng)用負(fù)載也是較為均勻的分布在多個CN上的。
在一般情況下,這幾個CN承載的業(yè)務(wù)與業(yè)務(wù)負(fù)載十分相近,也不存在特別差的SQL語句。我們選取相同的時間片切面,用“每秒返回行數(shù)”這個指標(biāo),看看在同一時間切片上,不同的CN節(jié)點(diǎn)中,與這個指標(biāo)具有較為相似的波動特性的指標(biāo)有哪些。
圖片
首先我們來看187節(jié)點(diǎn)的情況,有較強(qiáng)關(guān)聯(lián)性的指標(biāo)是每秒邏輯讀、每秒獲取行數(shù)、活躍會話數(shù)(低相似性)這幾個指標(biāo)。
圖片
再來看看224節(jié)點(diǎn)的情況,也十分類似,關(guān)聯(lián)性最強(qiáng)的是每秒邏輯讀和每秒獲取行數(shù)。
圖片
235節(jié)點(diǎn)的情況又會如何呢?也差不多,不過每秒獲取行數(shù)的指標(biāo)波動更為相近一些。
圖片
從上面的數(shù)據(jù)可以看出,每秒邏輯讀與每秒獲取行數(shù)是關(guān)聯(lián)性最強(qiáng)的兩個指標(biāo)。邏輯讀是與返回行數(shù)與并發(fā)SQL執(zhí)行量是十分強(qiáng)關(guān)聯(lián)的指標(biāo),因此這個指標(biāo)的波動特性與每秒返回行數(shù)的關(guān)聯(lián)系很強(qiáng),在大多數(shù)場景中都可能會出現(xiàn)。
而每秒獲取行數(shù)指標(biāo)看上去和每秒返回行數(shù)的血緣關(guān)系十分相近。不過實(shí)際上在不同的應(yīng)用場景中,二者可能會有較大的差異。每秒獲取行數(shù)是在掃描表或者訪問表時讀取的行的數(shù)量,而每秒返回行數(shù)是每秒返回到客戶端的行的數(shù)量。這二者在不同的SQL中可能會有較大的差異。比如SELECT COUNT(*)可能統(tǒng)計了1萬條數(shù)據(jù),但是只返回了1條數(shù)據(jù),這樣訪問數(shù)和返回數(shù)可能會相差萬倍。再比如說我們通過索引找出了一萬行數(shù)據(jù),再根據(jù)SQL中的和索引無關(guān)的過濾條件從中篩選出1000條,那么二者會有10倍的差異。從這兩個指標(biāo)的波動關(guān)聯(lián)性強(qiáng)弱可以看出數(shù)據(jù)庫執(zhí)行的SQL是否發(fā)生了變化,亦或是SQL訪問的數(shù)據(jù)或者使用的參數(shù)是否發(fā)生了變化。一般來說探索這些問題需要很復(fù)雜的過程,而通過指標(biāo)波動關(guān)聯(lián)性的分析就可以比較簡單,粗略的獲得了。
下面我把時間窗口調(diào)整到0點(diǎn)系統(tǒng)做批處理報表的時間段,我們會發(fā)現(xiàn)指標(biāo)波動的規(guī)律完全改變了。
圖片
白天的業(yè)務(wù)特點(diǎn)是大量的小型的查詢語句并發(fā)執(zhí)行,因此與之關(guān)聯(lián)的指標(biāo)數(shù)量較多,集中度較低。而晚上是少量的批處理作業(yè)在執(zhí)行,因此指標(biāo)波動的集中度很高,波動相似性也較強(qiáng),每秒邏輯讀與返回行數(shù)的關(guān)系十分相近。
雖然說某種業(yè)務(wù)下的某個指標(biāo)的波動關(guān)聯(lián)性會發(fā)生一些變化,不過有些東西是不會變的,那就是指標(biāo)之間的波動關(guān)聯(lián)性都是與數(shù)據(jù)庫的基本原理有關(guān)的。一般情況下不會存在兩個完全不相干的指標(biāo)之間存在較強(qiáng)的波動關(guān)聯(lián)性。
數(shù)據(jù)庫系統(tǒng)中的指標(biāo)波動特性是存在內(nèi)在的必然聯(lián)系的。比如說我們這個例子中的每秒返回行數(shù)指標(biāo),與每秒獲取行數(shù)(獲取是指從數(shù)據(jù)庫中訪問到了,但是并不一定返回客戶端了)、每秒邏輯讀、每秒物理讀、長查詢數(shù)量等,這些指標(biāo)之間都是存在較大的關(guān)聯(lián)關(guān)系的?;钴S會話數(shù)雖然與這些指標(biāo)直接不存在直接的關(guān)系,不過是能夠標(biāo)識出數(shù)據(jù)庫的活躍程度的,與之存在稍微弱一點(diǎn)的波動關(guān)聯(lián)性也是解釋得過去的。
研究與分析指標(biāo)之間的關(guān)系,有助于理解某個數(shù)據(jù)庫產(chǎn)品的基本特性,有助于在分析問題時抓住隱藏在表面之下的問題。這些年我們對Oracle數(shù)據(jù)庫的研究已經(jīng)十分深入了,這方面的知識很豐富。不過不幸的是,目前的國產(chǎn)數(shù)據(jù)庫廠家并沒有對外公布任何這方面的知識,這對于我們今后運(yùn)維國產(chǎn)數(shù)據(jù)庫形成了一定的障礙。我想現(xiàn)在肯定有一些從事數(shù)據(jù)庫服務(wù)的企業(yè)與個人已經(jīng)開展了這方面的研究,我們也希望數(shù)據(jù)庫廠商除了完善用戶文檔外,也發(fā)布一些這方面的知識,從而豐富國產(chǎn)數(shù)據(jù)庫運(yùn)維生態(tài)中的知識庫。我們團(tuán)隊也會通過我的公眾號,不斷的向外公開一些我們的研究成果。















 
 
 






 
 
 
 