專利名稱:一種數(shù)據(jù)庫訪問路徑效率分析處理方法、服務(wù)器及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明關(guān)于數(shù)據(jù)庫訪問技術(shù),具體的講是關(guān)于一種數(shù)據(jù)庫訪問路徑效率 分析處理方法、服務(wù)器及系統(tǒng)。
背景技術(shù):
主機(jī)平臺上的DB2數(shù)據(jù)庫是性能優(yōu)異,運(yùn)行穩(wěn)定,使用廣泛的數(shù)據(jù)庫解 決方案。在現(xiàn)有技術(shù)中,主機(jī)DB2數(shù)據(jù)庫訪問路徑效率分析處理的方法是在 生成數(shù)據(jù)庫訪問路徑相關(guān)信息后,先通過輸入查詢語句查找出某些指標(biāo)可能 隱含效率問題的程序的結(jié)構(gòu)化查詢語言命令(SQL),然后針對那些可能有問 題的SQL的訪問路徑,分別從DB2目錄(CATALOG)中提取出大量相關(guān)的 數(shù)據(jù)進(jìn)行綜合分析,從而確定有問題的程序SQL,最后再根據(jù)分析確定的結(jié) 果進(jìn)行相關(guān)優(yōu)化等解決措施。
在完成本發(fā)明的過程中發(fā)明人發(fā)現(xiàn),上述的數(shù)據(jù)庫訪問路徑效率分析處 理方法需要查詢的表的數(shù)量非常巨大,且需要逐一查詢,因此花費(fèi)時間大、 操作繁雜、等待時間長、輸入語句多、査詢結(jié)果察看不方便。常常是耗費(fèi)了 大量的時間和精力,卻無法及時發(fā)現(xiàn)訪問路徑有問題的SQL;同時,隨著諸 如銀行等用戶業(yè)務(wù)的不斷發(fā)展,主機(jī)應(yīng)用日益增多,數(shù)以萬計的程序投產(chǎn)運(yùn) 行,這便進(jìn)一步要求對程序SQL的訪問路徑效率情況能夠很好地控制掌握。
發(fā)明內(nèi)容
為了克服現(xiàn)有技術(shù)的缺陷,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)庫訪問路徑效 率分析處理方法、服務(wù)器及系統(tǒng),以能夠自動分析程序SQL訪問路徑的相關(guān) 信息,快速確定可能發(fā)生問題程序的DB2數(shù)據(jù)庫訪問路徑。
本發(fā)明實(shí)施例的目的之一是提供一種數(shù)據(jù)庫訪問路徑效率分析處理方法,所述的方法包括以下步驟接收用戶輸入的包含程序信息的結(jié)構(gòu)化査詢 語言命令SQL訪問路徑性能分析請求;根據(jù)所述的SQL訪問路徑性能分析請
求獲取SQL訪問路徑信息和SQL訪問路徑分析規(guī)則信息;根據(jù)所述SQL訪 問路徑性能分析請求中包含的程序信息判斷所述的程序是否為新程序;如果 是新程序,則對所述的SQL進(jìn)行謂詞分析處理,并根據(jù)所述的SQL訪問路徑 分析規(guī)則信息對所述的SQL訪問路徑性能進(jìn)行分析處理,生成SQL訪問路徑 性能分析結(jié)果信息;將所述的SQL訪問路徑性能分析結(jié)果信息輸出。
本發(fā)明實(shí)施例的目的之一是提供一種數(shù)據(jù)庫訪問路徑效率分析處理服
務(wù)器,所述的服務(wù)器包括分析請求接收單元,用于接收用戶輸入的包含程 序信息的結(jié)構(gòu)化查詢語言命令SQL訪問路徑性能分析請求;分析信息獲取單 元,用于根據(jù)所述的SQL訪問路徑性能分析請求獲取SQL訪問路徑信息和 SQL訪問路徑分析規(guī)則信息;訪問路徑處理單元,用于根據(jù)所述SQL訪問路
徑性能分析請求中包含的程序信息判斷所述的程序是否為新程序;如果是新
程序,則對所述的SQL進(jìn)行謂詞分析處理,并根據(jù)所述的SQL訪問路徑分析 規(guī)則信息對所述的SQL訪問路徑性能進(jìn)行分析處理,生成SQL訪問路徑性能 分析結(jié)果信息;分析結(jié)果輸出單元,用于將所述的SQL訪問路徑性能分析結(jié) 果信息輸出。
本發(fā)明實(shí)施例的目的之一是提供一種數(shù)據(jù)庫訪問路徑效率分析處理系
統(tǒng),所述系統(tǒng)包括輸入裝置、服務(wù)器、數(shù)據(jù)存儲裝置和輸出裝置;所述的
輸入裝置用于輸入包含程序信息的結(jié)構(gòu)化查詢語言命令SQL訪問路徑性能分 析請求;所述的數(shù)據(jù)存儲裝置用于存儲SQL訪問路徑信息、SQL訪問路徑分 析規(guī)則信息、和SQL表信息;所述的服務(wù)器用于接收用戶輸入的包含程序信 息的結(jié)構(gòu)化查詢語言命令SQL訪問路徑性能分析請求;根據(jù)所述的SQL訪問 路徑性能分析請求獲取SQL訪問路徑信息和SQL訪問路徑分析規(guī)則信息;根 據(jù)所述SQL訪問路徑性能分析請求中包含的程序信息判斷所述的程序是否為 新程序;如果是新程序,則對所述的SQL進(jìn)行謂詞分析處理,并根據(jù)所述的
7SQL訪問路徑分析規(guī)則信息對所述的SQL訪問路徑性能進(jìn)行分析處理,生成 SQL訪問路徑性能分析結(jié)果信息;所述的輸出裝置用于將所述的SQL訪問路 徑性能分析結(jié)果信息輸出。
本發(fā)明實(shí)施例的有益效果在于,實(shí)現(xiàn)主機(jī)DB2數(shù)據(jù)庫訪問路徑效率的自 動分析及管理;大大節(jié)約人力和時間的投入提高了工作效率;快速確定問題 程序、及時保障生產(chǎn)的安全運(yùn)行;實(shí)現(xiàn)程序訪問路徑分析規(guī)則的統(tǒng)一,有利 于程序訪問路徑的分析管理和及時發(fā)現(xiàn)問題;操作簡單,使用方便。
圖1為本發(fā)明實(shí)施例的系統(tǒng)組成結(jié)構(gòu)圖2為本發(fā)明實(shí)施例系統(tǒng)的輸入裝置組成結(jié)構(gòu)圖3為本發(fā)明實(shí)施例系統(tǒng)的訪問路徑效率分析服務(wù)器組成結(jié)構(gòu)圖4為本發(fā)明實(shí)施例系統(tǒng)的輸出裝置組成結(jié)構(gòu)圖5為本發(fā)明實(shí)施例系統(tǒng)的數(shù)據(jù)存儲裝置組成結(jié)構(gòu)圖6為本發(fā)明實(shí)施例系統(tǒng)處理流程圖7為本發(fā)明實(shí)施例系統(tǒng)的程序訪問路徑信息預(yù)處理流程圖8為本發(fā)明實(shí)施例系統(tǒng)的DB2統(tǒng)計信息預(yù)處理流程圖9為本發(fā)明實(shí)施例系統(tǒng)的專家規(guī)則預(yù)處理流程圖10為本發(fā)明實(shí)施例系統(tǒng)SQL訪問路徑分析規(guī)則映射關(guān)系圖11為本發(fā)明實(shí)施例新程序SQL訪問路徑分析結(jié)果輸出示意圖12為本發(fā)明實(shí)施例程序SQL訪問路徑對比分析結(jié)果輸出示意圖。
具體實(shí)施例方式
下面結(jié)合
本發(fā)明的具體實(shí)施方式
。 實(shí)施例一
如圖1所示,為本實(shí)施例的數(shù)據(jù)庫訪問路徑效率分析處理系統(tǒng),該系統(tǒng) 包括輸入裝置IOO、服務(wù)器200、數(shù)據(jù)存儲裝置400和輸出裝置300;服務(wù)器200分別與輸入裝置100、數(shù)據(jù)存儲裝置400和輸出裝置300相連接。
其中,輸入裝置100用于輸入包含程序信息的結(jié)構(gòu)化查詢語言命令SQL 訪問路徑性能分析請求;數(shù)據(jù)存儲裝置400用于存儲SQL訪問路徑信息、SQL 訪問路徑分析規(guī)則信息、和SQL表信息;服務(wù)器200用于接收用戶輸入的包 含程序信息的結(jié)構(gòu)化查詢語言命令SQL訪問路徑性能分析請求;根據(jù)SQL訪 問路徑性能分析請求獲取SQL訪問路徑信息和SQL訪問路徑分析規(guī)則信息; 根據(jù)SQL訪問路徑性能分析請求中包含的程序信息判斷所述的程序是否為新 程序;如果是新程序,則對SQL進(jìn)行謂詞分析處理,并根據(jù)SQL訪問路徑分 析規(guī)則信息對SQL訪問路徑性能進(jìn)行分析處理,生成SQL訪問路徑性能分析 結(jié)果信息;輸出裝置300用于將所述的SQL訪問路徑性能分析結(jié)果信息輸出。
如圖3所示,為本實(shí)施例系統(tǒng)的數(shù)據(jù)庫訪問路徑效率分析處理服務(wù)器200, 服務(wù)器200包括分析請求接收單元,該分析請求接收單元可以是一分析請 求接收模塊201用于接收用戶輸入的包含程序信息的結(jié)構(gòu)化查詢語言命令 SQL訪問路徑性能分析請求;
分析信息獲取單元,該分析信息獲取單元可以包括SQL訪問路徑信息讀 入模塊202、DB2系統(tǒng)數(shù)據(jù)統(tǒng)計信息讀入模塊203和專家規(guī)則庫讀入模塊204; 其中SQL訪問路徑信息讀入模塊202用于根據(jù)所述的SQL訪問路徑性能分析 請求獲取SQL訪問路徑信息,DB2系統(tǒng)數(shù)據(jù)統(tǒng)計信息讀入模塊203用于讀取 SQL表信息,專家規(guī)則庫讀入模塊204用于讀入作為SQL訪問路徑分析規(guī)則 信息的專家規(guī)則信息;
訪問路徑處理單元,該訪問路徑處理單元可以為一訪問路徑效率分析處 理主控模塊205,訪問路徑效率分析處理主控模塊205用于根據(jù)所述SQL訪 問路徑性能分析請求中包含的程序信息判斷所述的程序是否為新程序;如果 是新程序,則對所述的SQL進(jìn)行謂詞分析處理,并根據(jù)所述的SQL訪問路徑 分析規(guī)則信息對所述的SQL訪問路徑性能進(jìn)行分析處理,生成SQL訪問路徑 性能分析結(jié)果信息;如果不是新程序,則根據(jù)所述SQL訪問路徑性能分析請求獲取上一次SQL訪問路徑信息;將當(dāng)前SQL訪問路徑信息與上一次SQL 訪問路徑信息進(jìn)行對比,生成SQL訪問路徑變化信息;對當(dāng)前SQL進(jìn)行謂詞 分析處理,并根據(jù)所述的SQL訪問路徑分析規(guī)則信息對所述的SQL訪問路徑 變化信息進(jìn)行分析處理,生成SQL訪問路徑性能分析結(jié)果信息。訪問路徑效 率分析處理主控模塊205判斷所述的SQL訪問路徑變化信息為變好還是變差; 如果SQL訪問路徑變好,則將所述的SQL訪問路徑性能分析結(jié)果進(jìn)行存儲, 并將分析結(jié)果信息輸出;如果SQL訪問路徑變差,則生成SQL訪問路徑回退 作業(yè)流,并將所述的SQL訪問路徑回退作業(yè)流進(jìn)行存儲。訪問路徑效率分析 處理主控模塊205對所述的SQL進(jìn)行謂詞分析處理包括對所述的SQL進(jìn)行 謂詞特點(diǎn)分析,生成謂詞分析結(jié)果;根據(jù)所述的SQL表信息對涉及表的數(shù)據(jù) 分布特點(diǎn)進(jìn)行分析;并對所述謂詞分析結(jié)果進(jìn)行謂詞過濾率處理。
分析結(jié)果輸出單元,該分析結(jié)果輸出單元可以包括報表生成模塊206和 訪問路徑回退模塊207;其中報表生成模塊206用于生成并輸出SQL訪問路 徑性能分析結(jié)果報表信息;訪問路徑回退模塊207用于將SQL訪問路徑回退 作業(yè)流進(jìn)行存儲和輸出。
實(shí)施例二
本實(shí)施例的數(shù)據(jù)庫訪問路徑效率分析處理方法,運(yùn)行在如圖1所示的數(shù) 據(jù)庫訪問路徑效率分析處理系統(tǒng)中,該系統(tǒng)包括輸入裝置100、服務(wù)器200、 數(shù)據(jù)存儲裝置400和輸出裝置300;服務(wù)器200分別與輸入裝置100、數(shù)據(jù)存 儲裝置400和輸出裝置300相連接。
首先對存儲在數(shù)據(jù)存儲裝置400中的程序SQL相關(guān)訪問路徑信息、DB2 數(shù)據(jù)統(tǒng)計信息和專家規(guī)則信息進(jìn)行預(yù)處理,之后訪問路徑效率分析處理服務(wù) 器200根據(jù)輸入裝置100讀入的用戶需求,從數(shù)據(jù)存儲裝置400的程序SQL 訪問路徑信息存儲裝置401中讀入相關(guān)程序SQL訪問路徑信息進(jìn)行分析,同 時根據(jù)程序涉及的表,從數(shù)據(jù)存儲裝置400的DB2數(shù)據(jù)統(tǒng)計信息存儲裝置402 中讀入相關(guān)表的數(shù)據(jù)量、數(shù)據(jù)分布特點(diǎn)等信息,并根據(jù)訪問路徑類型,從數(shù)據(jù)存儲裝置400的專家規(guī)則庫存儲裝置403中讀入相關(guān)專家規(guī)則,經(jīng)過詳細(xì) 分析后,判斷程序SQL訪問路徑性能效率的優(yōu)劣,并將分析結(jié)果報表通過輸 出存儲裝置300輸出保存;
該分析方法的具體步驟為-
步驟l:程序預(yù)處理步驟對數(shù)據(jù)存儲裝置400中的程序訪問路徑信息、 DB2數(shù)據(jù)統(tǒng)計信息和專家規(guī)則庫進(jìn)行預(yù)處理;
步驟2:信息讀入步驟讀入用戶分析請求、程序SQL訪問路徑信息和 專家規(guī)則庫信息;
步驟3:分析處理步驟判斷是否新程序,根據(jù)判斷結(jié)果,如果是新程序,
則對SQL進(jìn)行謂詞特點(diǎn)分析、對涉及表數(shù)據(jù)分布特點(diǎn)進(jìn)行分析、謂詞過濾率 進(jìn)行計算,然后應(yīng)用專家規(guī)則庫判斷SQL訪問路徑優(yōu)劣;如果是對比分析, 則讀入SQL上一次訪問路徑信息進(jìn)行訪問路徑信息變化的對比分析,同時對
涉及表數(shù)據(jù)分布特點(diǎn)進(jìn)行分析和謂詞過濾率進(jìn)行計算,然后應(yīng)用專家規(guī)則判
斷訪問路徑是變差還是變好,對變差的訪問路徑生成訪問路徑回退作業(yè)流; 最后將新程序或?qū)Ρ确治霎a(chǎn)生的分析處理結(jié)果生成報表輸出到輸出裝置300。
其中,在步驟l的程序預(yù)處理步驟中,對程序SQL訪問路徑信息存儲裝 置401中的程序訪問路徑信息預(yù)處理的方法如下(參見圖6):
aSl:讀入EXPLAIN需求;
aS2:進(jìn)行程序EXPLAIN操作;
aS3:將EXPLAIN得到的程序SQL訪問路徑信息存儲到程序SQL訪問 路徑信息存儲裝置401中。
在步驟1的程序預(yù)處理步驟中,對DB2數(shù)據(jù)統(tǒng)計信息存儲裝置402中的 DB2數(shù)據(jù)統(tǒng)計信息預(yù)處理的方法具體為(參見圖7):
bSh讀入數(shù)據(jù)信息統(tǒng)計需求;
bS2:進(jìn)行數(shù)據(jù)信息統(tǒng)計操作;
bS3:將數(shù)據(jù)信息統(tǒng)計結(jié)果存儲到DB2數(shù)據(jù)統(tǒng)計信息存儲裝置402中。在步驟1的程序預(yù)處理步驟中,對專家規(guī)則庫存儲裝置403中的專家規(guī) 則庫預(yù)處理的方法具體為(參見圖8): cSl:歸納演繹生成專家規(guī)則; cS2:錄入專家規(guī)則;
cS3:將專家規(guī)則存儲到專家規(guī)則庫存儲裝置403中。 專家規(guī)則庫包括
al. SPFREQ:特殊傾斜值,全表某個值大于萬分之PARM1,并且全表 記錄數(shù)大于PARM2,則認(rèn)為效率差;
a2. NOFILTER:新舊通過索引后取DATA記錄數(shù)筆,新舊ACCESS PATH 取記錄比〉PARM1: PARM2,認(rèn)為效率變差;
a3,ORDROW:新訪問路徑增加ORDER BY,并取記錄數(shù)大于PARMl , 認(rèn)為效率變差,為0則認(rèn)為只要增加ORDER BY就認(rèn)為是變差;
a4. LISTROW:新訪問路徑增加LIST PREFETCH,并取記錄數(shù)大于 PARMl ,認(rèn)為效率變差,為0則認(rèn)為只要增加LIST PREFETCH,就認(rèn)為是 變差;
a5. NSQLROW:新版本SQL取記錄數(shù)大于該值則認(rèn)為是差;
專家規(guī)則庫可根據(jù)實(shí)際需求進(jìn)行擴(kuò)充或者修改。
如圖10所示,本實(shí)施例系統(tǒng)使用到的專家規(guī)則舉例如下-
1) SPFREQ特殊傾斜值,全表某個值大于萬分之PARMl ,并且全表記 錄數(shù)大于PARM2,則認(rèn)為效率差;
2) NOFILTER新舊通過索引后取DATA記錄數(shù)筆新舊ACCESS PATH 取記錄比〉PARMh PARM2,認(rèn)為效率變差;
3) ORDROW新訪問路徑增加ORDER BY,并取記錄數(shù)大于PARMl , 認(rèn)為效率變差,為0則認(rèn)為只要增加ORDERBY就認(rèn)為是變差;
4) LISTROW新訪問路徑增加LIST PREFETCH,并取記錄數(shù)大于
12PARMl,認(rèn)為效率變差,為0則認(rèn)為只要增加LIST PREFETCH,就認(rèn)為是 變差;
5) NSQLROW新版本SQL取記錄數(shù)大于該值,這認(rèn)為是差。 如圖9所示,步驟2的信息讀入步驟中的具體方法具體為 dSl:從輸入裝置100讀入相關(guān)分析,包括分析時間段、相關(guān)程序清單等; dS2:根據(jù)分析請求,從訪問路徑信息存儲裝置401中讀入相關(guān)程序SQL 的訪問路徑信息;
dS3:從專家規(guī)則庫存儲裝置403中讀入相關(guān)專家規(guī)則。 步驟3的分析處理步驟的具體方法具體為(參見圖9): eSl:判斷是否新程序,如果否,跳轉(zhuǎn)到步驟eS6;
eS2:對程序SQL進(jìn)行謂詞特點(diǎn)分析,如判斷是等于(=)謂詞還是區(qū)間 (〉、 <、 >=、 <=等)謂詞等。
eS3:從數(shù)據(jù)統(tǒng)計信息存儲裝置402中讀入SQL涉及表的相關(guān)數(shù)據(jù)量等信 息,并根據(jù)謂詞分析結(jié)果進(jìn)行謂詞過濾率計算,如對于等于(=)謂詞,過 濾率計算為1/ (不同值數(shù))等。
eS4:應(yīng)用專家規(guī)則庫判斷SQL訪問路徑的優(yōu)劣;
eS5:輸出相關(guān)處理報表信息,將分析結(jié)果信息存儲到輸出裝置300中的 新程序訪問路徑優(yōu)劣結(jié)果存儲裝置301中,然后跳轉(zhuǎn)到步驟eS20; eS6:讀入SQL上一次訪問路徑信息; eS7:對比分析兩次訪問路徑信息變化;
eS8:從數(shù)據(jù)統(tǒng)計信息存儲裝置402中讀入SQL涉及表的相關(guān)數(shù)據(jù)量等信 息,并根據(jù)謂詞分析結(jié)果進(jìn)行謂詞過濾率計算,如對于等于(=)謂詞,過濾 率計算為1/ (不同值數(shù))等。
eS9:應(yīng)用專家規(guī)則庫判斷訪問路徑是變差還是變好,如果是變好,則跳 轉(zhuǎn)到步驟eSll;
eS10:生成訪問路徑回退作業(yè)流,將其存儲在輸出裝置300中的程序SQL
13訪問路徑回退作業(yè)流存儲裝置303;
eSll:輸出相關(guān)處理報表信息并將其存儲在輸出裝置300中的程序SQL 變化訪問路徑對比優(yōu)劣結(jié)果存儲裝置302中; eS20:分析處理結(jié)束。
處理結(jié)果舉例如下
如圖11所示,新程序SQL訪問路徑分析結(jié)果為"GOODORBAD"字 段說明訪問路徑優(yōu)劣,"B"表示訪問路徑差,"G"表示訪問路徑好。 "REAS0N1"說明訪問路徑優(yōu)劣的原因。
如圖12所示,程序SQL訪問路徑對比分析結(jié)果為"GOODORBAD" 字段說明訪問路徑優(yōu)劣,"B"表示訪問路徑差,"G"表示訪問路徑好。 "REAS0N1"說明訪問路徑優(yōu)劣的原因。 實(shí)施例三
如圖1所示,為本發(fā)明實(shí)施例的數(shù)據(jù)庫訪問路徑效率分析處理系統(tǒng),該 系統(tǒng)包括輸入裝置IOO、服務(wù)器200、數(shù)據(jù)存儲裝置400和輸出裝置300; 服務(wù)器200分別與輸入裝置100、數(shù)據(jù)存儲裝置400和輸出裝置300相連接。
輸入裝置100主要用于讀入用戶的需求;服務(wù)器200能夠根據(jù)輸入裝置 100讀入的用戶需求,從數(shù)據(jù)存儲裝置400中讀入相關(guān)程序SQL訪問路徑信 息進(jìn)行分析,同時根據(jù)程序涉及的表,從數(shù)據(jù)存儲裝置400中讀入相關(guān)表的 數(shù)據(jù)量、數(shù)據(jù)分布特點(diǎn)等信息,并根據(jù)訪問路徑類型,從數(shù)據(jù)存儲裝置400 讀入相關(guān)專家規(guī)則,經(jīng)過詳細(xì)分析后,判斷程序SQL訪問路徑性能效率的優(yōu) 劣,并將分析結(jié)果報表輸出到輸出存儲裝置300;輸出存儲裝置300用于保存 服務(wù)器200的分析處理結(jié)果,包括統(tǒng)計報表、相關(guān)作業(yè)流等;數(shù)據(jù)存儲裝置 400則用于存儲服務(wù)器200進(jìn)行分析前需要預(yù)先存儲的相關(guān)數(shù)據(jù),以保證服務(wù) 器200分析處理的準(zhǔn)確性和全面性。
如圖2所示,輸入裝置100主要甩于提供用戶相關(guān)輸入場,其包括兩個 部分程序清單輸入裝置101和時間段輸入裝置102,程序清單輸入裝置IOI
14主要是用于輸入要分析SQL訪問路徑性能的程序清單;時間段輸入裝置102
則主要用于輸入要分析SQL訪問路徑性能的程序訪問路徑信息存儲的時間段。
如圖3所示,服務(wù)器200作為核心裝置,主要包括七大模塊分析請求 接收模塊201、程序SQL訪問路徑信息讀入模塊202、 DB2系統(tǒng)數(shù)據(jù)統(tǒng)計信 息讀入模塊203、專家規(guī)則庫讀入模塊204、訪問路徑效率分析處理主控模塊 205、報表生成模塊206和訪問路徑回退模塊207。
其中,分析請求接收模塊201用于接收用戶輸入的包含程序信息的結(jié)構(gòu) 化查詢語言命令SQL訪問路徑性能分析請求。
程序SQL訪問路徑信息讀入模塊202是輸入模塊,主要是用于讀入程序 SQL的相關(guān)訪問路徑信息;DB2系統(tǒng)數(shù)據(jù)統(tǒng)計信息讀入模塊203也是輸入模 塊,主要用于讀入系統(tǒng)相關(guān)表的數(shù)據(jù)量統(tǒng)計信息、分析數(shù)據(jù)分布信息等;專 家規(guī)則庫讀入模塊204同樣是輸入模塊,主要用于讀入相關(guān)專家規(guī)則等。
訪問路徑效率分析處理主控模塊205則根據(jù)輸入裝置100讀入的用戶分 析需求,調(diào)用程序SQL訪問路徑信息讀入模塊202讀入相關(guān)程序的SQL訪問 路徑信息,然后調(diào)用DB2系統(tǒng)數(shù)據(jù)統(tǒng)計信息讀入模塊203讀入相關(guān)數(shù)據(jù)信息、 分析數(shù)據(jù)分布特征,最后調(diào)用專家規(guī)則庫讀入模塊204讀入相關(guān)專家規(guī)則,-判斷SQL訪問路徑是否正常,并根據(jù)分析結(jié)果調(diào)用報表生成模塊206和范圍 路徑回退模塊207。
報表生成模塊206是輸出模塊,主要是訪問路徑效率分析處理主控模塊 205的輸出,即程序SQL訪問路徑信息分析處理的結(jié)果,對新程序主要是哪 些SQL訪問路徑較差等,對舊程序主要是哪些SQL訪問路徑有變化,是變好 還是變壞等報表信息;訪問路徑回退模塊207是輸出模塊,主要是針對程序 SQL訪問路徑有變化,并且是變差的情況,生成回退原來的訪問路徑的相關(guān) 作業(yè)流等。
如圖4所示,輸出裝置300主要是分析處理結(jié)果存儲裝置,組成主要包括新程序訪問路徑優(yōu)劣結(jié)果存儲單元301、程序變化SQL訪問路徑對比優(yōu) 劣結(jié)果存儲單元302和程序SQL訪問路徑回退作業(yè)流存儲裝置303;其中新 程序訪問路徑優(yōu)劣結(jié)果存儲單元301用于存儲新程序SQL訪問路徑效率優(yōu)劣 結(jié)果,程序變化SQL訪問路徑對比優(yōu)劣結(jié)果存儲單元302用于存儲程序SQL 變化訪問路徑對比優(yōu)劣分析結(jié)果,這兩部分存儲結(jié)果主要是訪問路徑效率分 析處理裝置200中的報表生成模塊205的輸出結(jié)果;程序SQL訪問路徑回退 作業(yè)流存儲單元303用于存儲相關(guān)程序SQL訪問路徑回退作業(yè)流,這部分存 儲結(jié)果主要是訪問路徑效率分析處理裝置200中的訪問路徑回退模塊206的 輸出結(jié)果。
處理結(jié)果舉例如下
如圖11所示,新程序SQL訪問路徑分析結(jié)果為"GOODORBAD"字 段說明訪問路徑優(yōu)劣,"B"表示訪問路徑差,"G"表示訪問路徑好。
"REASON1"說明訪問路徑優(yōu)劣的原因。
如圖12所示,程序SQL訪問路徑對比分析結(jié)果為"GOODORBAD" 字段說明訪問路徑優(yōu)劣,"B"表示訪問路徑差,"G"表示訪問路徑好。
"REASON1"說明訪問路徑優(yōu)劣的原因。
如圖5所示,數(shù)據(jù)存儲裝置400主要是用于預(yù)先存儲進(jìn)行分析前需要相 關(guān)數(shù)據(jù),組成主要包括程序SQL訪問路徑信息存儲裝置401、 DB2數(shù)據(jù)統(tǒng) 計信息存儲裝置402和專家規(guī)則庫存儲裝置403,這三部分的數(shù)據(jù)都是訪問路 徑效率分析處理裝置200進(jìn)行分析前需要預(yù)先存儲的相關(guān)數(shù)據(jù),以保證訪問 路徑效率分析處理裝置200分析處理的準(zhǔn)確性及全面性;其中,程序SQL訪 問路徑信息存儲裝置401主要用于存儲程序SQL相關(guān)訪問路徑信息,DB2數(shù) 據(jù)統(tǒng)計信息存儲裝置402主要是用于存儲DB2表相關(guān)數(shù)據(jù)量信息、索引信息、 數(shù)據(jù)分布信息等,專家規(guī)則庫存儲裝置403主要用于存儲系統(tǒng)使用到的相關(guān) 專家規(guī)則等,專家規(guī)則需要預(yù)先存儲到專家規(guī)則庫存儲裝置403中,專家規(guī) 則初始值由數(shù)據(jù)庫專家根據(jù)研討經(jīng)驗(yàn)值生成,并可根據(jù)實(shí)際需求情況不斷擴(kuò)充或修改。
如圖10所示,該系統(tǒng)使用到的專家規(guī)則舉例如下
1) SPFREQ特殊傾斜值,全表某個值大于萬分之PARM1,并且全表記 錄數(shù)大于PARM2,則認(rèn)為效率差;
2) NOFILTER新舊通過索引后取DATA記錄比,新舊ACCESS PATH 取記錄比〉PARM1: PARM2,認(rèn)為效率變差;
3) ORDROW新訪問路徑增加ORDER BY,并取記錄數(shù)大于PARM1 , 認(rèn)為效率變差,為0則認(rèn)為只要增加ORDER BY就認(rèn)為是變差;
4) LISTROW新訪問路徑增加LIST PREFETCH,并取記錄數(shù)大于 PARM1,認(rèn)為效率變差,為0則認(rèn)為只要增加LIST PREFETCH,就認(rèn)為是 變差;
5) NSQLROW新版本SQL取記錄數(shù)大于該值,這認(rèn)為是差。 由于采用上述方法和結(jié)構(gòu),本發(fā)明實(shí)施例具有以下有益效果 本發(fā)明實(shí)施例能夠根據(jù)輸入裝置讀入的用戶需求,從數(shù)據(jù)存儲裝置中讀
入相關(guān)程序SQL訪問路徑信息進(jìn)行分析,同時根據(jù)程序涉及的表,從數(shù)據(jù)存 儲裝置中讀入相關(guān)表的數(shù)據(jù)量、數(shù)據(jù)分布特點(diǎn)等信息,并根據(jù)訪問路徑類型, 從數(shù)據(jù)存儲裝置讀入相關(guān)專家規(guī)則,經(jīng)過詳細(xì)分析后,判斷程序SQL訪問路 徑性能效率的優(yōu)劣,并將分析結(jié)果報表輸出,如果是對比分析,還能針對變 差的訪問路徑生成回退作業(yè)流;使用該方法不僅能夠自動分析程序SQL訪問 路徑的相關(guān)信息,還能自動判斷SQL訪問路徑是否正常等,并且可通過系統(tǒng) 輸出的分析結(jié)果報表及時和清楚的掌握數(shù)據(jù)庫訪問路徑效率的情況;實(shí)現(xiàn)了 主機(jī)DB2數(shù)據(jù)庫訪問路徑效率分析的自動化管理。
本發(fā)明實(shí)施例進(jìn)行DB2數(shù)據(jù)庫訪問路徑效率分析時,使用者只需將需要 預(yù)處理的程序SQL相關(guān)訪問路徑信息、相關(guān)專家規(guī)則信息以及DB2表相關(guān)數(shù) 據(jù)量信息、數(shù)據(jù)分布信息等基本信息預(yù)先存儲到數(shù)據(jù)存儲裝置中,系統(tǒng)完成 信息的預(yù)處理后,則能夠根據(jù)使用者的輸入需求自動完成數(shù)據(jù)庫訪問路徑效率的自動分析,因此完全只需要很少量的甚至一個操作者即可完成,大大減
少了人力的投入;同時,使用本系統(tǒng)及方法可以控制較短的時間內(nèi)完成整個 系統(tǒng)——幾萬個主機(jī)程序的訪問路徑分析,相對傳統(tǒng)的人工分析方法,則大 大減少了程序訪問路徑分析的時間投入;較大幅度的提高了工作效率。
本發(fā)明實(shí)施例的訪問路徑效率分析處理服務(wù)器能夠根據(jù)輸入裝置讀入的 用戶分析需求,調(diào)用程序SQL訪問路徑信息讀入模塊讀入相關(guān)程序的SQL訪 問路徑信息,然后調(diào)用DB2系統(tǒng)數(shù)據(jù)統(tǒng)計信息讀入模塊讀入相關(guān)數(shù)據(jù)信息, 分析數(shù)據(jù)分布特征,還能夠調(diào)用專家規(guī)則庫讀入模塊讀入相關(guān)專家規(guī)則,判 斷SQL訪問路徑是否正常并將分析結(jié)果輸出;克服了傳統(tǒng)分析方法操作繁 多、需要查詢大量表數(shù)據(jù)、逐一等待査詢結(jié)果、不方便查看查詢結(jié)果等的缺 點(diǎn);同時,使用本系統(tǒng)還能夠控制在30分鐘內(nèi)完成整個系統(tǒng)——幾萬個主機(jī) 程序的訪問路徑分析,操作者因此可以快速發(fā)現(xiàn)訪問路徑有問題的程序,及 時采取優(yōu)化措施避免相關(guān)問題出現(xiàn),從而保證了程序運(yùn)行的性能,保障了生 產(chǎn)的安全運(yùn)行。
本發(fā)明實(shí)施例是自動應(yīng)用經(jīng)過資深DB2優(yōu)化專家研討生成的訪問路徑分 析專家規(guī)則,統(tǒng)一了程序訪問路徑分析方法,有利于程序訪問路徑的分析管 理和及時發(fā)現(xiàn)問題。操作簡單,使用方便。
以上僅為本發(fā)明的較佳實(shí)施例,非因此局限本發(fā)明的權(quán)利要求,運(yùn)用本 發(fā)明說明書及圖示內(nèi)容所作的等效結(jié)構(gòu)變化,均同理包含在本發(fā)明的范圍內(nèi)。
權(quán)利要求
1. 一種數(shù)據(jù)庫訪問路徑效率分析處理方法,其特征是,所述的方法包括以下步驟接收用戶輸入的包含程序信息的結(jié)構(gòu)化查詢語言命令SQL訪問路徑性能分析請求;根據(jù)所述的SQL訪問路徑性能分析請求獲取SQL訪問路徑信息和SQL訪問路徑分析規(guī)則信息;根據(jù)所述SQL訪問路徑性能分析請求中包含的程序信息判斷所述的程序是否為新程序;如果是新程序,則對所述的SQL進(jìn)行謂詞分析處理,并根據(jù)所述的SQL訪問路徑分析規(guī)則信息對所述的SQL訪問路徑性能進(jìn)行分析處理,生成SQL訪問路徑性能分析結(jié)果信息;將所述的SQL訪問路徑性能分析結(jié)果信息輸出。
2. 如權(quán)利要求l所述的方法,其特征是,如果所述的程序不是新程序, 則根據(jù)所述SQL訪問路徑性能分析請求獲取上一次SQL訪問路徑信息; 將當(dāng)前SQL訪問路徑信息與上一次SQL訪問路徑信息進(jìn)行對比,生成SQL訪問路徑變化信息;對當(dāng)前SQL進(jìn)行謂詞分析處理,并根據(jù)所述的SQL訪問路徑分析規(guī)則信 息對所述的SQL訪問路徑變化信息進(jìn)行分析處理,生成SQL訪問路徑性能分 析結(jié)果信息;將所述的SQL訪問路徑性能分析結(jié)果信息輸出。
3. 如權(quán)利要求l所述的方法,其特征是,所述的程序信息包括SQL訪 問路徑性能的程序清單和SQL訪問路徑信息存儲的時間段。
4. 如權(quán)利要求1或2所述的方法,其特征是,所述的對所述的SQL進(jìn)行 謂詞分析處理包括對所述的SQL進(jìn)行謂詞特點(diǎn)分析,生成謂詞分析結(jié)果; 獲取SQL表信息,根據(jù)所述的SQL表信息對涉及表的數(shù)據(jù)分布特點(diǎn)進(jìn)行 分析;并對所述謂詞分析結(jié)果進(jìn)行謂詞過濾率處理。
5. 如權(quán)利要求2所述的方法,其特征是,所述的SQL訪問路徑變化信息 包括SQL訪問路徑變好和SQL訪問路徑變差;如果SQL訪問路徑變好,則將所述的SQL訪問路徑性能分析結(jié)果進(jìn)行存 儲,并將分析結(jié)果信息輸出;如果SQL訪問路徑變差,則生成SQL訪問路徑回退作業(yè)流,并將所述的 SQL訪問路徑回退作業(yè)流進(jìn)行存儲。
6. —種數(shù)據(jù)庫訪問路徑效率分析處理服務(wù)器,其特征是,所述的服務(wù)器 包括分析請求接收單元,用于接收用戶輸入的包含程序信息的結(jié)構(gòu)化查詢語 言命令SQL訪問路徑性能分析請求;分析信息獲取單元,用于根據(jù)所述的SQL訪問路徑性能分析請求獲取 SQL訪問路徑信息和SQL訪問路徑分析規(guī)則信息;訪問路徑處理單元,用于根據(jù)所述SQL訪問路徑性能分析請求中包含的 程序信息判斷所述的程序是否為新程序;如果是新程序,則對所述的SQL進(jìn) 行謂詞分析處理,并根據(jù)所述的SQL訪問路徑分析規(guī)則信息對所述的SQL訪 問路徑性能進(jìn)行分析處理,生成SQL訪問路徑性能分析結(jié)果信息;分析結(jié)果輸出單元,用于將所述的SQL訪問路徑性能分析結(jié)果信息輸出。
7. 如權(quán)利要求6所述的服務(wù)器,其特征是,所述的訪問路徑處理單元根 據(jù)所述SQL訪問路徑性能分析請求中包含的程序信息判斷所述的程序是否為 新程序;如果所述的程序不是新程序,則根據(jù)所述SQL訪問路徑性能分析請 求獲取上一次SQL訪問路徑信息;將當(dāng)前SQL訪問路徑信息與上一次SQL 訪問路徑信息進(jìn)行對比,生成SQL訪問路徑變化信息;對當(dāng)前SQL進(jìn)行謂詞 分析處理,并根據(jù)所述的SQL訪問路徑分析規(guī)則信息對所述的SQL訪問路徑變化信息進(jìn)行分析處理,生成SQL訪問路徑性能分析結(jié)果信息。
8. 如權(quán)利要求6所述的服務(wù)器,其特征是,所述的程序信息包括SQL 訪問路徑性能的程序清單和SQL訪問路徑信息存儲的時間段。
9. 如權(quán)利要求6或7所述的服務(wù)器,其特征是,所述的分析信息獲取單 元還用于獲取SQL表信息;所述的訪問路徑處理單元對所述的SQL迸行謂詞分析處理包括對所述 的SQL進(jìn)行謂詞特點(diǎn)分析,生成謂詞分析結(jié)果;根據(jù)所述的SQL表信息對涉 及表的數(shù)據(jù)分布特點(diǎn)進(jìn)行分析;并對所述謂詞分析結(jié)果進(jìn)行謂詞過濾率處理。
10. 如權(quán)利要求7所述的服務(wù)器,其特征是,所述的訪問路徑處理單元 判斷所述的SQL訪問路徑變化信息為變好還是變差;如果SQL訪問路徑變好,則將所述的SQL訪問路徑性能分析結(jié)果進(jìn)行存 儲,并將分析結(jié)果信息輸出;如果SQL訪問路徑變差,則生成SQL訪問路徑回退作業(yè)流,并將所述的 SQL訪問路徑回退作業(yè)流進(jìn)行存儲。
11. 一種數(shù)據(jù)庫訪問路徑效率分析處理系統(tǒng),其特征是,所述系統(tǒng)包括 輸入裝置、服務(wù)器、數(shù)據(jù)存儲裝置和輸出裝置;所述的輸入裝置用于輸入包含程序信息的結(jié)構(gòu)化査詢語言命令SQL訪問 路徑性能分析請求;所述的數(shù)據(jù)存儲裝置用于存儲SQL訪問路徑信息、SQL訪問路徑分析規(guī) 則信息、和SQL表信息;所述的服務(wù)器用于接收用戶輸入的包含程序信息的結(jié)構(gòu)化查詢語言命令 SQL訪問路徑性能分析請求;根據(jù)所述的SQL訪問路徑性能分析請求獲取 SQL訪問路徑信息和SQL訪問路徑分析規(guī)則信息;根據(jù)所述SQL訪問路徑 性能分析請求中包含的程序信息判斷所述的程序是否為新程序;如果是新程 序,則對所述的SQL進(jìn)行謂詞分析處理,并根據(jù)所述的SQL訪問路徑分析規(guī) 則信息對所述的SQL訪問路徑性能進(jìn)行分析處理,生成SQL訪問路徑性能分析結(jié)果信息;所述的輸出裝置用于將所述的SQL訪問路徑性能分析結(jié)果信息輸出。
12. 如權(quán)利要求ll所述的系統(tǒng),其特征是,所述的服務(wù)器根據(jù)所述SQL 訪問路徑性能分析請求中包含的程序信息判斷所述的程序是否為新程序;如 果所述的程序不是新程序,則根據(jù)所述SQL訪問路徑性能分析請求獲取上一 次SQL訪問路徑信息;將當(dāng)前SQL訪問路徑信息與上一次SQL訪問路徑信 息進(jìn)行對比,生成SQL訪問路徑變化信息;對當(dāng)前SQL進(jìn)行謂詞分析處理, 并根據(jù)所述的SQL訪問路徑分析規(guī)則信息對所述的SQL訪問路徑變化信息進(jìn) 行分析處理,生成SQL訪問路徑性能分析結(jié)果信息。
13. 如權(quán)利要求12所述的系統(tǒng),其特征是,所述的服務(wù)器判斷所述的SQL 訪問路徑變化信息為變好還是變差;如果SQL訪問路徑變好,則將所述的SQL訪問路徑性能分析結(jié)果進(jìn)行存 儲,如果SQL訪問路徑變差,則生成SQL訪問路徑回退作業(yè)流,并將所述的 SQL訪問路徑回退作業(yè)流進(jìn)行存儲。
14. 如權(quán)利要求ll所述的系統(tǒng),其特征是,所述的輸入裝置包括 程序清單輸入單元,用于輸入SQL訪問路徑性能的程序清單; 時間段輸入單元,用于輸入SQL訪問路徑信息存儲的時間段。
15. 如權(quán)利要求13所述的系統(tǒng),其特征是,所述的輸出裝置包括 新程序訪問路徑優(yōu)劣結(jié)果存儲單元,用于存儲輸新程序訪問路徑性能分析結(jié)果信息;SQL變化訪問路徑對比優(yōu)劣結(jié)果存儲單元,用于存儲所述的SQL訪問路 徑性能分析結(jié)果;SQL訪問路徑回退作業(yè)流存儲單元,用于存儲所述的SQL訪問路徑回退 作業(yè)流。
全文摘要
本發(fā)明提供一種數(shù)據(jù)庫訪問路徑效率分析處理方法、服務(wù)器及系統(tǒng),該方法包括接收用戶輸入的包含程序信息的結(jié)構(gòu)化查詢語言命令SQL訪問路徑性能分析請求;根據(jù)SQL訪問路徑性能分析請求獲取SQL訪問路徑信息和SQL訪問路徑分析規(guī)則信息;根據(jù)SQL訪問路徑性能分析請求中包含的程序信息判斷程序是否為新程序;如果是新程序,則對SQL進(jìn)行謂詞分析處理,并根據(jù)SQL訪問路徑分析規(guī)則信息對所述的SQL訪問路徑性能進(jìn)行分析處理,生成SQL訪問路徑性能分析結(jié)果信息;如果不是新程序,則對程序新舊訪問路徑進(jìn)行對比分析,生成SQL訪問路徑性能分析結(jié)果信息;將SQL訪問路徑性能分析結(jié)果信息輸出。以分析程序SQL訪問路徑的相關(guān)信息,確定可能發(fā)生問題程序的DB2數(shù)據(jù)庫訪問路徑。
文檔編號G06F17/30GK101425091SQ20081023894
公開日2009年5月6日 申請日期2008年12月5日 優(yōu)先權(quán)日2008年12月5日
發(fā)明者徐樂耕, 曾美財, 李奇?zhèn)? 鄧俊峰 申請人:中國工商銀行股份有限公司