專利名稱:實時數(shù)據(jù)庫對象的統(tǒng)計數(shù)字的采集的制作方法
技術領域:
本發(fā)明涉及計算機數(shù)據(jù)庫,說得更具體一點,本發(fā)明涉及計算機數(shù)據(jù)庫對象的統(tǒng)計數(shù)字的采集。
大凡DBMS,比如IBM公司的DB2關系數(shù)據(jù)庫管理系統(tǒng),皆由數(shù)據(jù)庫對象的統(tǒng)計數(shù)字來確定訪問路徑??梢栽谟媱澾B接時間里確定訪問路徑,在動態(tài)SQL情況下,也可在執(zhí)行時間里確定訪問路徑。無論在何種情況下,統(tǒng)計數(shù)字若不及時更新則不能優(yōu)化選擇的路徑。
在現(xiàn)有技術中,已經(jīng)可以得到用來采集數(shù)據(jù)庫對象的統(tǒng)計數(shù)字的產(chǎn)品,這類現(xiàn)有技術產(chǎn)品的例子有IBM公司的“RUNSTATS”和鉑金科技公司(Platinum Technology Inc.)的“數(shù)據(jù)庫分析家”。不過,這類產(chǎn)品的不足之一是他們只能在批模式下運行,而這是很耗時的;另一不足在于,若要求最高精度,則在采集統(tǒng)計數(shù)字時,數(shù)據(jù)庫對象必需處于只讀狀態(tài)。
基于上述理由,需要一種系統(tǒng)和方法,用來在實時的基礎上采集和維護數(shù)據(jù)庫對象的統(tǒng)計數(shù)字,而且在采集過程中,數(shù)據(jù)庫對象不再限于只讀狀態(tài)。
發(fā)明概要本發(fā)明的實施例是一種系統(tǒng),借助數(shù)據(jù)庫管理系統(tǒng)來采集數(shù)據(jù)庫對象的統(tǒng)計數(shù)字。該系統(tǒng)選擇一個或多個對象和相應的一個或多個對象字段,接著,為所選對象字段創(chuàng)建基準的統(tǒng)計數(shù)字集合。該系統(tǒng)還要讀取動態(tài)運行記錄,一旦在動態(tài)運行記錄里讀取到了改動,就要更新基準的統(tǒng)計數(shù)字集合。最終,該系統(tǒng)在抵達動態(tài)運行記錄的結(jié)束符時,開始取出運行記錄,并基于取出的運行記錄更新已更新的統(tǒng)計數(shù)字。
圖2示出了根據(jù)本發(fā)明的實施例的系統(tǒng)所執(zhí)行的步驟的流程圖。
詳述
圖1是系統(tǒng)框圖,用來實現(xiàn)本發(fā)明的實施例。數(shù)據(jù)庫對象的統(tǒng)計數(shù)字采集系統(tǒng)10包括耦合至數(shù)據(jù)庫20的計算機15。計算機15可以是任意的通用計算機,其中包括至少一個處理器和一個內(nèi)存裝置(未示出)。
計算機15執(zhí)行與數(shù)據(jù)庫20交互的DBMS。在此所述的實施例里,DBMS是IBM公司的DB2。不過,任何別的DBMS,只要能夠響應下面結(jié)合圖2說明的步驟,也可適用。
數(shù)據(jù)庫20是由存儲在里面的數(shù)據(jù)庫對象構(gòu)成的。數(shù)據(jù)庫對象的例子包括表格、表空間、索引和索引空間等等??梢詾槊總€數(shù)據(jù)庫對象采集和監(jiān)視各種統(tǒng)計數(shù)字,比如,可能想要采集每個表格里所包括的行數(shù),或表空間里的動態(tài)頁數(shù)。這些統(tǒng)計數(shù)字令DBMS能產(chǎn)生出到數(shù)據(jù)庫20的最優(yōu)訪問路徑。
數(shù)據(jù)庫20里的每個表格都包括運行記錄,每項運行記錄皆記載了與之相應的表格的改動,當出現(xiàn)故障事件時可用來重建表格。
計算機15在其內(nèi)存里存儲了一套指令集,當處理器執(zhí)行這套指令集時,令DBMS根據(jù)本發(fā)明的一個實施例進行數(shù)據(jù)庫對象的統(tǒng)計數(shù)字的實時采集。圖2示出了根據(jù)本發(fā)明的一個實施例的系統(tǒng)10所執(zhí)行的步驟的流程圖。
在步驟200,至少選擇一個數(shù)據(jù)庫對象以采集其統(tǒng)計數(shù)字,同時選擇該對象的統(tǒng)計字段。數(shù)據(jù)庫對象的例子包括表格和表空間,表格字段的例子是“表格的行數(shù)”,表空間的例子是“表空間里的動態(tài)頁數(shù)”。在一個實施例中,字段是DB2編目里的列,而且被用來優(yōu)化到數(shù)據(jù)庫20的訪問路徑。
在步驟210,請求被初始化,以便開始為在步驟200所選的對象和相應的對象字段采集統(tǒng)計數(shù)據(jù)。
在步驟220,通過讀取數(shù)據(jù)庫20的全部內(nèi)容并為所選對象和字段取出統(tǒng)計信息,從而創(chuàng)建基準的統(tǒng)計數(shù)字集合。使用已知的統(tǒng)計檢索產(chǎn)品,比如鉑金科技公司的“數(shù)據(jù)庫分析家”,可以實現(xiàn)步驟220。
在建立了基準的數(shù)據(jù)庫集合以后,在步驟230讀取動態(tài)運行記錄和已歸檔運行記錄;在步驟240,隨著讀取到運行記錄里的改動而更新所選的字段。
在步驟250,確定是否抵達了動態(tài)運行記錄的結(jié)束符。若未抵達結(jié)束符,則繼續(xù)執(zhí)行步驟230;若抵達了動態(tài)運行記錄的結(jié)束符,則系統(tǒng)20不再讀取動態(tài)運行記錄了。
在步驟260,通過檢查運行記錄然后再把它們寫入動態(tài)運行記錄,從而開始了實時取出運行記錄。在實施例里,執(zhí)行DB2的“運行記錄退出”功能以實現(xiàn)取出。“運行記錄退出”是已知的DB2應用程序界面(“API”),但在本發(fā)明里也可使用任意現(xiàn)成的實時取出運行記錄的方法。
在步驟280,系統(tǒng)10檢查第一項被取出的動態(tài)運行記錄與在步驟230所讀取的最后一項運行記錄之間有否間隔。若兩者之間存在間隔,則通過重讀來自運行記錄的動態(tài)運行記錄來處理該間隔,此處的動態(tài)運行記錄在第一項被取出的動態(tài)運行記錄里與結(jié)束符對應。這就確保了在結(jié)束符與第一項被取出的運行記錄之間不會丟失運行記錄。
在檢查并處理完間隔以后,在步驟290繼續(xù)實時地取出運行記錄。
在步驟295,確定用戶是否發(fā)出了刷新統(tǒng)計數(shù)字的請求。若發(fā)出了請求,則在步驟298更新統(tǒng)計字段,并把最新的數(shù)據(jù)庫統(tǒng)計數(shù)字提供給用戶。然后繼續(xù)步驟290,直到發(fā)出了另一個刷新請求,或收到了終止該過程的請求。在一個實施例里,通過訪問想要的字段并更新數(shù)據(jù)庫編目來隨時刷新統(tǒng)計數(shù)字。
在其它實施例里,不是在步驟295等候刷新請求,而是隨著取出運行記錄時遇到的改動而不停地刷新字段。在該實施例里,字段乃至統(tǒng)計數(shù)字可以不停地顯示給用戶,令用戶持續(xù)地監(jiān)視數(shù)據(jù)庫的統(tǒng)計數(shù)字。
如文中公開的,根據(jù)本發(fā)明實施例的系統(tǒng)和方法令用戶實時或按要求采集并監(jiān)視統(tǒng)計數(shù)字,這就為用戶提供了極為及時而準確的統(tǒng)計信息。
此處特別圖示和/或說明了本發(fā)明的一些實施例。不過,需要意識到的是,上述教導涵蓋了本發(fā)明的改進和變化,而且這些改進和變化皆處于所附權利要求的條款之內(nèi),未背離本發(fā)明的精神和意圖的范圍。
權利要求
1.一種方法,借助數(shù)據(jù)庫管理系統(tǒng)(DBMS)來采集數(shù)據(jù)庫對象的統(tǒng)計數(shù)字,所述方法包括(a)選擇一個或多個對象和相應的一個或多個對象字段;(b)為所選對象字段創(chuàng)建基準的統(tǒng)計數(shù)字集合;(c)讀取動態(tài)運行記錄;(d)一旦在動態(tài)運行記錄里讀到了改動,就要更新基準的統(tǒng)計數(shù)字集合;(e)在抵達動態(tài)運行記錄的結(jié)束符時,開始取出運行記錄;和(f)基于取出的運行記錄更新已更新的統(tǒng)計數(shù)字。
2.權利要求1的方法,其中響應于用戶請求而執(zhí)行步驟(f)。
3.權利要求1的方法,其中響應于在取出的運行記錄里所讀到的又一改動而執(zhí)行步驟(f)。
4.權利要求1的方法,進一步包括當取出第一項運行記錄時檢查有否間隔。
5.權利要求4的方法,其中檢查有否間隔的步驟包括重讀來自運行記錄的動態(tài)運行記錄,此處的動態(tài)運行記錄在第一項被取出的運行記錄里與結(jié)束符響應。
6.權利要求1的方法,其中DBMS是DB2。
7.權利要求6的方法,其中步驟(e)包括執(zhí)行運行記錄退出的功能。
8.一種系統(tǒng),借助數(shù)據(jù)庫管理系統(tǒng)來采集數(shù)據(jù)庫對象的統(tǒng)計數(shù)字,所述系統(tǒng)包括用來選擇一個或多個對象和相應的一個或多個對象字段的裝置;用來為所選對象字段創(chuàng)建基準的統(tǒng)計數(shù)字集合的裝置;用來讀取動態(tài)運行記錄的裝置;當在動態(tài)運行記錄里讀到了改動,就更新基準的統(tǒng)計數(shù)字集合的裝置;在抵達動態(tài)運行記錄的結(jié)束符時,開始取出運行記錄的裝置;和用來基于取出的運行記錄更新已更新的統(tǒng)計數(shù)字的裝置。
9.權利要求8的系統(tǒng),其中所述“用來基于取出的運行記錄更新已更新的統(tǒng)計數(shù)字的裝置”是響應于用戶請求而執(zhí)行的。
10.權利要求9的系統(tǒng),其中所述“用來基于取出的運行記錄更新已更新的統(tǒng)計數(shù)字的裝置”是響應于在取出的運行記錄里所讀到的又一改動而執(zhí)行的。
11.權利要求8的系統(tǒng),進一步包括當取出第一項運行記錄時檢查有否間隔的裝置。
12.權利要求11的系統(tǒng),其中所述用來檢查有否間隔的裝置包括重讀來自運行記錄的動態(tài)運行記錄來處理該間隔的裝置,此處的動態(tài)運行記錄在第一項被取出的運行記錄里與結(jié)束符響應。
13.權利要求8的系統(tǒng),其中DBMS是DB2。
14.權利要求13的系統(tǒng),其中所述用來開始取出運行記錄的裝置包括執(zhí)行記錄退出的功能。
全文摘要
一種系統(tǒng),借助數(shù)據(jù)庫管理系統(tǒng)來采集數(shù)據(jù)庫對象的統(tǒng)計數(shù)字,該系統(tǒng)選擇一個或多個對象和相應的一個或多個對象字段(200),接著,為所選對象字段創(chuàng)建基準的統(tǒng)計數(shù)字集合(220)。該系統(tǒng)還要讀取動態(tài)運行記錄(230),一旦在動態(tài)運行記錄里讀取了改動,就要更新基準的統(tǒng)計數(shù)字集合(240)。最終,該系統(tǒng)在抵達動態(tài)運行記錄的文件結(jié)束符時(250),開始取出運行記錄(260),并基于取出的運行記錄更新已更新的統(tǒng)計數(shù)字(298)。
文檔編號G06F11/34GK1367898SQ00811092
公開日2002年9月4日 申請日期2000年6月23日 優(yōu)先權日1999年7月7日
發(fā)明者克里斯托弗·F·帕克 申請人:聯(lián)合想象計算機公司