專利名稱::提高數(shù)據(jù)庫中數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性的方法及裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及數(shù)據(jù)庫技術(shù),特別涉及一種提高數(shù)據(jù)庫中數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性的方法及裝置。
背景技術(shù):
:現(xiàn)在的數(shù)據(jù)庫,無論是用于數(shù)據(jù)倉庫或操作數(shù)據(jù)存儲,都包含豐富的海量數(shù)據(jù)對象信息,因而,一方面,及時(shí)查找和展示用戶需要的信息是一個(gè)巨大的挑戰(zhàn),另一方面,從海量數(shù)據(jù)信息中查找得到的信息的可靠性(數(shù)據(jù)庫查詢質(zhì)量)對于用戶以及數(shù)據(jù)庫運(yùn)營商來說也很重要。以下以目前應(yīng)用廣泛的oracle數(shù)據(jù)庫為例,對查詢過程作簡要介紹。圖1為現(xiàn)有oracle數(shù)據(jù)庫中結(jié)構(gòu)化查詢語言(SQLJtructuredQueryLanguage)語句的執(zhí)行流程示意圖,參見圖1,該流程包括步驟101,接收用戶輸入的SQL語句,進(jìn)行語法語義檢查(syntaxcheck);本步驟中,檢查此SQL語句的拼寫是否符合語法,訪問對象是否存在及該進(jìn)行查詢的用戶是否具備相應(yīng)的權(quán)限等。SQL語句分為數(shù)據(jù)定義語言(DDL,DataDefineLanguage)語句和數(shù)據(jù)操作語言(DML,DataManipulationLanguage)語句。其中,DML語句操作針對邏輯量,DDL操作針對物理量,詳細(xì)描述可參見相關(guān)技術(shù)文獻(xiàn),在此不再贅述。步驟102,oracle數(shù)據(jù)庫利用內(nèi)部預(yù)先存儲的算法對SQL語句進(jìn)行解析(prase),生成解析樹(parsetree),根據(jù)解析樹生成執(zhí)行計(jì)劃;本步驟中,生成的執(zhí)行計(jì)劃包括表或索引的訪問方式等。實(shí)際應(yīng)用中,步驟102生成的執(zhí)行計(jì)劃的好壞(質(zhì)量高低)直接決定了SQL語句執(zhí)行效率的高低,而執(zhí)行計(jì)劃基本由基于成本的優(yōu)化器(CBO,Cost-basedOptimizer)根據(jù)解析得到的解析樹中參數(shù)查詢數(shù)據(jù)庫系統(tǒng)基表中預(yù)先存儲的數(shù)據(jù)對象統(tǒng)計(jì)信息,選擇代價(jià)最小的訪問路徑,根據(jù)訪問路徑找到相應(yīng)的數(shù)據(jù)對象,并將該數(shù)據(jù)對象信息返回給用戶;如果根據(jù)得到的解析樹中參數(shù)查詢不到數(shù)據(jù)庫系統(tǒng)基表中預(yù)先存儲的數(shù)據(jù)對象統(tǒng)計(jì)信息,則從數(shù)據(jù)對象庫存儲的數(shù)據(jù)對象中逐個(gè)查詢,直到獲取該參數(shù)對應(yīng)的數(shù)據(jù)對象并將該數(shù)據(jù)對象信息返回給用戶,其中,系統(tǒng)基表存儲的數(shù)據(jù)對象統(tǒng)計(jì)信息用于數(shù)據(jù)對象庫存儲的數(shù)據(jù)對象的索引或訪問路徑。根據(jù)CBO優(yōu)化規(guī)則,為了能對應(yīng)用SQL語句進(jìn)行解析,產(chǎn)生準(zhǔn)確高效的執(zhí)行計(jì)劃,oracle數(shù)據(jù)庫從系統(tǒng)基表中獲取相關(guān)數(shù)據(jù)庫底層的數(shù)據(jù)對象統(tǒng)計(jì)信息,該統(tǒng)計(jì)信息是由最近一次對數(shù)據(jù)對象進(jìn)行分析時(shí)記錄在系統(tǒng)基表。因而,在該分析后,如果對oracle數(shù)據(jù)庫中數(shù)據(jù)對象進(jìn)行了操作并改變了該數(shù)據(jù)對象統(tǒng)計(jì)信息,則在查詢時(shí)將導(dǎo)致系統(tǒng)基表中存儲的該數(shù)據(jù)對象統(tǒng)計(jì)信息不可用。因此,數(shù)據(jù)庫底層數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性的高低,將直接影響CBO產(chǎn)生執(zhí)行計(jì)劃的好壞。當(dāng)前oracle數(shù)據(jù)庫系統(tǒng)中,一般通過以下兩種技術(shù)方案來實(shí)現(xiàn)數(shù)據(jù)對象統(tǒng)計(jì)信息的可靠性。技術(shù)方案一以時(shí)間維度為衡量標(biāo)準(zhǔn),按照一定的時(shí)間間隔(每日、每周、每月等),制定oracle數(shù)據(jù)庫的定時(shí)分析作業(yè),在時(shí)間間隔到時(shí),對數(shù)據(jù)庫中存儲的數(shù)據(jù)對象按照分析策略進(jìn)行分析,獲取相應(yīng)的數(shù)據(jù)對象統(tǒng)計(jì)信息并對系統(tǒng)基表中存儲的數(shù)據(jù)對象統(tǒng)計(jì)信息進(jìn)行更新以保障查詢時(shí)數(shù)據(jù)對象統(tǒng)計(jì)信息的相對準(zhǔn)確。該以時(shí)間維度為衡量標(biāo)準(zhǔn)的技術(shù)方案適用于結(jié)構(gòu)簡單的單一型oracle數(shù)據(jù)庫,其應(yīng)用類型相對簡單,數(shù)據(jù)庫規(guī)模較小,無數(shù)據(jù)量激變。該技術(shù)方案應(yīng)用較為廣泛,是統(tǒng)計(jì)信息時(shí)效性的理論基礎(chǔ)。但該技術(shù)方案使用定時(shí)分析技術(shù),隨著oracle數(shù)據(jù)庫復(fù)雜度的增加,在不同類型的對象數(shù)據(jù)變化趨勢差異明顯的情況下,無法制定對所有對象數(shù)據(jù)均適用的時(shí)間間隔,使得系統(tǒng)基表中存儲的數(shù)據(jù)對象統(tǒng)計(jì)信息得不到及時(shí)的更新,因而,在技術(shù)方案一的基礎(chǔ)上,提出了下述技術(shù)方案二。技術(shù)方案二結(jié)合實(shí)際應(yīng)用,根據(jù)數(shù)據(jù)對象業(yè)務(wù)邏輯的不同,以oracle數(shù)據(jù)庫中具體業(yè)務(wù)數(shù)據(jù)的變化趨勢及業(yè)務(wù)數(shù)據(jù)絕對變化量等為標(biāo)準(zhǔn),對各個(gè)數(shù)據(jù)對象,有針對性的制定分析策略。例如,以oracle數(shù)據(jù)庫中業(yè)務(wù)數(shù)據(jù)每增加100W條記錄為標(biāo)準(zhǔn),對oracle數(shù)據(jù)庫分析一次,獲取相應(yīng)的數(shù)據(jù)對象統(tǒng)計(jì)信息并更新系統(tǒng)基表。該技術(shù)方案在技術(shù)方案一的基礎(chǔ)上,結(jié)合應(yīng)用業(yè)務(wù)數(shù)據(jù)的變化趨勢進(jìn)行分析,適用于應(yīng)用類型相對復(fù)雜但系統(tǒng)規(guī)模相對較小(數(shù)據(jù)對象相對較少)的oracle數(shù)據(jù)庫。通過對不同業(yè)務(wù)類型的數(shù)據(jù)對象,設(shè)計(jì)不同的業(yè)務(wù)數(shù)據(jù)絕對變化量,并定制不同的數(shù)據(jù)對象分析策略分析相應(yīng)的數(shù)據(jù)對象,來保證各數(shù)據(jù)對象統(tǒng)計(jì)信息的相對及時(shí)更新以及查詢時(shí)的相對準(zhǔn)確。步驟103,oracle數(shù)據(jù)庫根據(jù)執(zhí)行計(jì)劃執(zhí)行SQL語句查詢并返回查詢結(jié)果。如前所述,oracle數(shù)據(jù)庫首先查詢系統(tǒng)基表,判斷系統(tǒng)基表中是否存儲有SQL語句對應(yīng)的數(shù)據(jù)對象統(tǒng)計(jì)信息,如果是,獲取數(shù)據(jù)對象訪問路徑,根據(jù)訪問路徑找到相應(yīng)的數(shù)據(jù)對象;否則,從存儲的數(shù)據(jù)對象庫中逐個(gè)查詢,直到獲取該SQL語句對應(yīng)的數(shù)據(jù)對象。由上述可見,現(xiàn)有的oracle數(shù)據(jù)庫,在數(shù)據(jù)對象較少的情況下,通過定期或根據(jù)數(shù)據(jù)對象絕對變化量,對系統(tǒng)基表存儲的數(shù)據(jù)對象統(tǒng)計(jì)信息進(jìn)行更新,可以保障各數(shù)據(jù)對象統(tǒng)計(jì)信息的相對準(zhǔn)確以及查詢的命中率,從而有效降低了查詢所需的時(shí)間。但隨著信息技術(shù)的迅猛發(fā)展,oracle數(shù)據(jù)庫系統(tǒng)需要處理的業(yè)務(wù)數(shù)據(jù)量、信息量越來越龐大,應(yīng)用oracle數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)越來越復(fù)雜,oracle數(shù)據(jù)庫規(guī)模也隨之與日俱增的情況下,基于數(shù)據(jù)對象業(yè)務(wù)邏輯的差異制定的業(yè)務(wù)數(shù)據(jù)絕對變化量等標(biāo)準(zhǔn),如果預(yù)先設(shè)定的業(yè)務(wù)數(shù)據(jù)絕對變化量較小,則需要頻繁更新,系統(tǒng)資源消耗大,維護(hù)成本高;如果預(yù)先設(shè)定的業(yè)務(wù)數(shù)據(jù)絕對變化量較大,當(dāng)oracle數(shù)據(jù)庫發(fā)生變化時(shí),例如,將新的數(shù)據(jù)對象加入到oracle數(shù)據(jù)庫中,或者對原有oracle數(shù)據(jù)庫中的數(shù)據(jù)對象進(jìn)行操作使其對應(yīng)的數(shù)據(jù)對象統(tǒng)計(jì)信息發(fā)生變化,這時(shí),由于無法保證及時(shí)對系統(tǒng)基表進(jìn)行更新,容易造成信息疏漏及索引不正確,oracle數(shù)據(jù)庫根據(jù)該未更新的系統(tǒng)基表對用戶輸入的信息進(jìn)行查詢,查詢命中率低,數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性低,增加了查詢所需的時(shí)間。
發(fā)明內(nèi)容有鑒于此,本發(fā)明的主要目的在于提出一種提高數(shù)據(jù)庫中數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性的方法,降低數(shù)據(jù)庫維護(hù)成本、提高數(shù)據(jù)庫中數(shù)據(jù)對象統(tǒng)計(jì)信息的查詢命中率。本發(fā)明的另一目的在于提出一種提高數(shù)據(jù)庫中數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性的裝置,降低數(shù)據(jù)庫維護(hù)成本、提高數(shù)據(jù)庫中數(shù)據(jù)對象統(tǒng)計(jì)信息的查詢命中率。為達(dá)到上述目的,本發(fā)明提供了一種提高數(shù)據(jù)庫中數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性的方法,該方法包括A、接收數(shù)據(jù)對象,根據(jù)接收的數(shù)據(jù)對象信息以及預(yù)先存儲的數(shù)據(jù)對象信息,獲取數(shù)據(jù)對象絕對改變量以及數(shù)據(jù)對象相對改變量,并存儲該接收的數(shù)據(jù)對象以及數(shù)據(jù)對象名稱;B、判斷累計(jì)的數(shù)據(jù)對象絕對改變量以及數(shù)據(jù)對象相對改變量是否超過預(yù)先設(shè)定的數(shù)據(jù)對象改變量閾值,如果是,執(zhí)行C,否則,返回執(zhí)行步驟A;C、調(diào)用預(yù)先設(shè)定的分析策略,對數(shù)據(jù)庫中存儲的數(shù)據(jù)對象進(jìn)行可靠性掃描,獲取與存儲的數(shù)據(jù)對象名稱相同的數(shù)據(jù)對象;D、調(diào)用分析程序?qū)Λ@取的數(shù)據(jù)對象進(jìn)行處理,獲取數(shù)據(jù)對象統(tǒng)計(jì)信息并更新存儲數(shù)據(jù)對象統(tǒng)計(jì)信息的系統(tǒng)基表。所述數(shù)據(jù)對象相對改變量為自數(shù)據(jù)庫上一次更新后發(fā)生變化的數(shù)據(jù)對象絕對改變量與數(shù)據(jù)庫上一次更新時(shí)存儲的數(shù)據(jù)對象量的比值。所述數(shù)據(jù)對象相對改變量包括相對物理改變量和相對邏輯改變量;所述數(shù)據(jù)對象絕對改變量包括絕對物理改變量、絕對邏輯改變量和結(jié)構(gòu)改變量。所述相對邏輯改變量包括插入相對改變量、更新相對改變量以及刪除相對改變量;所述相對物理改變量包括數(shù)據(jù)對象塊相對改變量;所述絕對物理改變量包括數(shù)據(jù)對象塊絕對改變量;所述絕對邏輯改變量包括插入絕對改變量以及刪除絕對改變量;所述結(jié)構(gòu)改變量為對系統(tǒng)基表執(zhí)行增加/刪除/修改字段操作以及添加新的索引信息導(dǎo)致的數(shù)據(jù)結(jié)構(gòu)改變。所述插入相對改變量為自上次進(jìn)行數(shù)據(jù)對象分析后,對數(shù)據(jù)對象進(jìn)行插入操作的記錄數(shù)與總的記錄數(shù)的比值;所述更新相對改變量為自上次進(jìn)行數(shù)據(jù)對象分析后,對數(shù)據(jù)庫中原有數(shù)據(jù)對象進(jìn)行更新操作的記錄數(shù)與總的記錄數(shù)的比值;所述刪除相對改變量為自上次進(jìn)行數(shù)據(jù)對象分析后,對數(shù)據(jù)庫中原有數(shù)據(jù)對象進(jìn)行刪除操作的記錄數(shù)與總的記錄數(shù)的比值;所述數(shù)據(jù)對象塊相對改變量為自上次進(jìn)行數(shù)據(jù)對象分析后,數(shù)據(jù)對象塊大小改變量與數(shù)據(jù)庫中數(shù)據(jù)對象塊總大小的比值。所述數(shù)據(jù)對象改變量閾值包括數(shù)據(jù)對象絕對改變量閥值和數(shù)據(jù)對象相對改變量閥值;所述判斷累計(jì)的數(shù)據(jù)對象絕對改變量以及數(shù)據(jù)對象相對改變量是否超過預(yù)先設(shè)定的數(shù)據(jù)對象改變量閾值包括判斷累計(jì)的數(shù)據(jù)對象絕對改變量是否超過預(yù)先設(shè)定的數(shù)據(jù)對象絕對改變量閾值、且累計(jì)的數(shù)據(jù)對象相對改變量是否超過預(yù)先設(shè)定的數(shù)據(jù)對象相對改變量閾值。所述判斷累計(jì)的數(shù)據(jù)對象絕對改變量以及數(shù)據(jù)對象相對改變量是否超過預(yù)先設(shè)定的數(shù)據(jù)對象改變量閾值包括判斷累計(jì)的插入絕對改變量是否超過預(yù)先設(shè)定的插入絕對改變量閾值、且累計(jì)的插入相對改變量是否超過預(yù)先設(shè)定的插入相對改變量閾值;或,判斷累計(jì)的刪除絕對改變量是否超過預(yù)先設(shè)定的刪除絕對改變量閾值、且累計(jì)的刪除相對改變量是否超過預(yù)先設(shè)定的刪除相對改變量閾值;或,判斷累計(jì)的更新相對改變量是否超過預(yù)先設(shè)定的更新相對改變量閾值;或,判斷累計(jì)的數(shù)據(jù)對象塊絕對改變量是否超過預(yù)先設(shè)定的數(shù)據(jù)對象塊絕對改變量閾值、且累計(jì)的數(shù)據(jù)對象塊相對改變量是否超過預(yù)先設(shè)定的數(shù)據(jù)對象塊相對改變量閾值;或,判斷數(shù)據(jù)對象自上次分析后,是否發(fā)生過數(shù)據(jù)定義語言操作。一種提高數(shù)據(jù)庫中數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性的裝置,該裝置包括數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性檢測單元、數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性獲取單元以及數(shù)據(jù)對象統(tǒng)計(jì)信息存儲單元,其中,數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性檢測單元,用于根據(jù)當(dāng)前操作的數(shù)據(jù)對象信息與預(yù)先存儲的數(shù)據(jù)對象信息獲取該數(shù)據(jù)對象改變量信息并存儲該數(shù)據(jù)對象以及該數(shù)據(jù)對象名稱,如果累計(jì)的數(shù)據(jù)對象改變量超過預(yù)先設(shè)定的數(shù)據(jù)對象改變量閾值,將存儲的數(shù)據(jù)對象名稱輸出至數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性獲取單元;數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性獲取單元,用于按照預(yù)先設(shè)定的分析策略從存儲的數(shù)據(jù)對象中獲取與接收的數(shù)據(jù)對象名稱相同的數(shù)據(jù)對象,獲取相應(yīng)的數(shù)據(jù)對象統(tǒng)計(jì)信息,發(fā)送至數(shù)據(jù)對象統(tǒng)計(jì)信息存儲單元;數(shù)據(jù)對象統(tǒng)計(jì)信息存儲單元,接收來自數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性獲取單元的數(shù)據(jù)對象統(tǒng)計(jì)信息并存儲。所述數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性檢測單元包括數(shù)據(jù)對象接收模塊、數(shù)據(jù)對象存儲模塊、數(shù)據(jù)對象處理模塊、數(shù)據(jù)對象名稱存儲模塊、數(shù)據(jù)對象發(fā)送模塊以及數(shù)據(jù)對象改變量閾值存儲模塊,其中,數(shù)據(jù)對象接收模塊,用于接收數(shù)據(jù)對象,輸出至數(shù)據(jù)對象處理模塊;數(shù)據(jù)對象處理模塊,用于根據(jù)接收的數(shù)據(jù)對象以及數(shù)據(jù)對象存儲模塊存儲的相應(yīng)數(shù)據(jù)對象信息,獲取數(shù)據(jù)對象改變量信息,將該數(shù)據(jù)對象輸出至數(shù)據(jù)對象存儲模塊并將該數(shù)據(jù)對象名稱輸出至數(shù)據(jù)對象名稱存儲模塊;判斷累計(jì)的數(shù)據(jù)對象改變量是否超過數(shù)據(jù)對象改變量閾值存儲模塊存儲的數(shù)據(jù)對象改變量閾值,如果是,從數(shù)據(jù)對象存儲模塊中獲取與數(shù)據(jù)對象名稱存儲模塊存儲的數(shù)據(jù)對象名稱相同的數(shù)據(jù)對象,輸出至數(shù)據(jù)對象發(fā)送模塊;數(shù)據(jù)對象存儲模塊,預(yù)先存儲有數(shù)據(jù)對象,用于接收數(shù)據(jù)對象處理模塊輸出的數(shù)據(jù)對象,更新相應(yīng)數(shù)據(jù)對象;數(shù)據(jù)對象發(fā)送模塊,用于將接收的數(shù)據(jù)對象發(fā)送至外部的數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性獲取單元;數(shù)據(jù)對象改變量閾值存儲模塊,用于存儲數(shù)據(jù)對象改變量閾值。由上述的技術(shù)方案可見,本發(fā)明提供的一種提高數(shù)據(jù)庫中數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性的方法及裝置,接收數(shù)據(jù)對象,根據(jù)接收的數(shù)據(jù)對象信息以及預(yù)先存儲的數(shù)據(jù)對象信息,獲取數(shù)據(jù)對象絕對改變量以及數(shù)據(jù)對象相對改變量,并存儲該接收的數(shù)據(jù)對象以及數(shù)據(jù)對象名稱;判斷累計(jì)的數(shù)據(jù)對象絕對改變量以及數(shù)據(jù)對象相對改變量是否超過預(yù)先設(shè)定的數(shù)據(jù)對象改變量閾值,如果否,返回執(zhí)行接收數(shù)據(jù)對象的步驟,如果是,調(diào)用預(yù)先設(shè)定的分析策略,對數(shù)據(jù)庫中存儲的數(shù)據(jù)對象進(jìn)行可靠性掃描,獲取與存儲的數(shù)據(jù)對象名稱相同的數(shù)據(jù)對象;調(diào)用分析程序?qū)Λ@取的數(shù)據(jù)對象進(jìn)行處理,獲取數(shù)據(jù)對象統(tǒng)計(jì)信息并更新存儲數(shù)據(jù)對象統(tǒng)計(jì)信息的系統(tǒng)基表。這樣,通過引入數(shù)據(jù)對象相對改變量,與數(shù)據(jù)對象絕對改變量結(jié)合使用,以數(shù)據(jù)對象實(shí)時(shí)變化為依據(jù),及時(shí)發(fā)現(xiàn)并自動(dòng)處理變化的數(shù)據(jù)對象,最大限度的保證了數(shù)據(jù)對象統(tǒng)計(jì)信息與實(shí)際狀況的偏差在可靠范圍內(nèi);同時(shí),降低了數(shù)據(jù)庫維護(hù)成本、提高了數(shù)據(jù)庫中數(shù)據(jù)對象統(tǒng)計(jì)信息的查詢命中率。圖1為現(xiàn)有oracle數(shù)據(jù)庫中結(jié)構(gòu)化查詢語言語句的執(zhí)行流程示意圖。圖2為本發(fā)明實(shí)施例的提高數(shù)據(jù)庫中數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性的方法流程示意圖。圖3為本發(fā)明實(shí)施例的提高數(shù)據(jù)庫中數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性的裝置結(jié)構(gòu)示意圖。圖4為本發(fā)明實(shí)施例數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性檢測單元結(jié)構(gòu)示意圖。具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例對本發(fā)明作進(jìn)一步地詳細(xì)描述?,F(xiàn)有技術(shù)中,無論是技術(shù)方案一還是技術(shù)方案二,都只適用于數(shù)據(jù)對象變化較少的數(shù)據(jù)庫,并按照一定的時(shí)間間隔制定定時(shí)分析作業(yè)、或以業(yè)務(wù)數(shù)據(jù)絕對變化量為標(biāo)準(zhǔn)更新分析策略,因而,在數(shù)據(jù)對象變化較多時(shí),其維護(hù)成本高,且在數(shù)據(jù)庫發(fā)生變化時(shí),不能及時(shí)更新分析策略,使得數(shù)據(jù)庫系統(tǒng)基表中數(shù)據(jù)對象統(tǒng)計(jì)信息的查詢命中率較低,增加了查詢數(shù)據(jù)庫數(shù)據(jù)對象所需時(shí)間。上述時(shí)間維度的絕對量以及業(yè)務(wù)數(shù)據(jù)變化趨勢的絕對量等均是基于某種絕對量的改變。但是,在實(shí)際生產(chǎn)中,由于數(shù)據(jù)庫中基準(zhǔn)數(shù)據(jù)對象量的不同,使得相同數(shù)據(jù)對象絕對量的改變可能對不同的數(shù)據(jù)庫產(chǎn)生截然不同的效果。例如,有A、B兩個(gè)數(shù)據(jù)庫,A數(shù)據(jù)庫原有1億個(gè)數(shù)據(jù)對象,B數(shù)據(jù)庫原有300萬(W)個(gè)數(shù)據(jù)對象,假設(shè)兩個(gè)數(shù)據(jù)庫在3天時(shí)間內(nèi),均新增數(shù)據(jù)對象100W,此時(shí),無論時(shí)間絕對量(3天)的改變、或是數(shù)據(jù)對象絕對量(100W)的改變,對兩個(gè)數(shù)據(jù)庫的影響都是迥然不同的A數(shù)據(jù)庫新增100W數(shù)據(jù)對象后,其數(shù)據(jù)對象改變率僅為(100W/1億),對數(shù)據(jù)庫系統(tǒng)基表中存儲的數(shù)據(jù)對象統(tǒng)計(jì)信息查詢命中率基本無影響,不需要為此更新分析策略,因而,無需重新采集數(shù)據(jù)對象統(tǒng)計(jì)信息;而對于B數(shù)據(jù)庫,其數(shù)據(jù)對象改變率超過30%(100W/300W),因而,如果不對系統(tǒng)基表的分析策略進(jìn)行更新,將使得數(shù)據(jù)對象統(tǒng)計(jì)信息查詢命中率進(jìn)一步降低,即需要重新采集數(shù)據(jù)對象統(tǒng)計(jì)信息以保障查詢命中率。如前所述,在用戶進(jìn)行查詢時(shí),數(shù)據(jù)庫根據(jù)用戶輸入的查詢關(guān)鍵詞進(jìn)行分析、處理后,從系統(tǒng)基表中獲取相關(guān)數(shù)據(jù)對象統(tǒng)計(jì)信息,這些數(shù)據(jù)對象統(tǒng)計(jì)信息是由最近一次對數(shù)據(jù)對象分析時(shí)記錄在系統(tǒng)基表中的。因而,如果用戶輸入的查詢關(guān)鍵詞是數(shù)據(jù)庫最近一次對數(shù)據(jù)對象分析后更新的數(shù)據(jù)對象,則在系統(tǒng)基表中查詢的命中率為零,需要從數(shù)據(jù)庫存儲的數(shù)據(jù)對象中逐個(gè)查詢,由于從數(shù)據(jù)庫數(shù)據(jù)對象中查詢所需的時(shí)間要遠(yuǎn)遠(yuǎn)大于從系統(tǒng)基表中進(jìn)行查詢所需的時(shí)間,增加了查詢所需的時(shí)間。對于數(shù)據(jù)庫來說,由于數(shù)據(jù)對象總是在不斷變化(數(shù)據(jù)對象的新增、更新、刪除等)的,因此在對數(shù)據(jù)對象分析前,記錄的數(shù)據(jù)對象統(tǒng)計(jì)信息總是有一定程度的滯后性,下面描述中,將這種記錄的數(shù)據(jù)對象統(tǒng)計(jì)信息與實(shí)際的數(shù)據(jù)對象統(tǒng)計(jì)信息的比值稱之為數(shù)據(jù)對象相對改變量,即需要更新的數(shù)據(jù)對象改變量與數(shù)據(jù)庫上一次更新時(shí)存儲的數(shù)據(jù)對象量的比值。實(shí)際應(yīng)用中,隨著數(shù)據(jù)庫的持續(xù)運(yùn)行以及數(shù)據(jù)對象的新增、更新、刪除等操作,數(shù)據(jù)對象相對改變量會(huì)越來越大,而隨著數(shù)據(jù)對象相對改變量的逐漸增大,系統(tǒng)基庫中的數(shù)據(jù)對象統(tǒng)計(jì)信息的可靠性就越來越低,使得CBO可能因此產(chǎn)生不恰當(dāng)?shù)膱?zhí)行計(jì)劃,導(dǎo)致數(shù)據(jù)庫整體可靠性降低。因而,如果設(shè)置一個(gè)合理的數(shù)據(jù)對象相對改變量閥值,針對不同的數(shù)據(jù)對象絕對改變量,設(shè)置相應(yīng)的數(shù)據(jù)對象相對改變量閥值,在數(shù)據(jù)對象相對改變量達(dá)到數(shù)據(jù)對象相對改變量閥值時(shí),及時(shí)對數(shù)據(jù)庫中需要更新的數(shù)據(jù)對象進(jìn)行重新分析,使其在系統(tǒng)基表中相關(guān)的數(shù)據(jù)對象統(tǒng)計(jì)信息及時(shí)得到更新,這樣,就可以保障數(shù)據(jù)對象統(tǒng)計(jì)信息的可靠性,從而提高數(shù)據(jù)庫整體可靠性。本發(fā)明實(shí)施例中,基于oracle數(shù)據(jù)庫中數(shù)據(jù)對象絕對改變量以及數(shù)據(jù)對象相對改變量,通過準(zhǔn)實(shí)時(shí)采集oracle數(shù)據(jù)庫底層數(shù)據(jù)對象,獲取各種數(shù)據(jù)對象絕對改變量以及相對改變量,提出評估oracle數(shù)據(jù)庫底層數(shù)據(jù)對象絕對改變量以及數(shù)據(jù)對象相對改變量的算法,用來作為更新當(dāng)前oracle數(shù)據(jù)庫系統(tǒng)基表中數(shù)據(jù)對象統(tǒng)計(jì)信息的可靠性的依據(jù),并建立自動(dòng)分析隊(duì)列對需要更新的數(shù)據(jù)對象進(jìn)行分析處理,最終實(shí)現(xiàn)全oracle數(shù)據(jù)庫所有數(shù)據(jù)對象統(tǒng)計(jì)信息的實(shí)時(shí)高可靠性保障,提升oracle數(shù)據(jù)庫穩(wěn)定運(yùn)行指標(biāo)。所應(yīng)說明的是,本實(shí)施例的技術(shù)方案不僅僅可以應(yīng)用于oracle數(shù)據(jù)庫,也可以應(yīng)用于其它的數(shù)據(jù)庫,其方法與應(yīng)用于oracle數(shù)據(jù)庫的方法相同,后續(xù)不再贅述。下面先對本發(fā)明實(shí)施例涉及的數(shù)據(jù)庫不同的數(shù)據(jù)對象以及相應(yīng)的數(shù)據(jù)對象相對改變量進(jìn)行描述。數(shù)據(jù)對象絕對改變量包括數(shù)據(jù)對象絕對物理改變量(以下簡稱絕對物理改變量),數(shù)據(jù)對象絕對邏輯改變量(以下簡稱絕對邏輯改變量)以及結(jié)構(gòu)改變量等;數(shù)據(jù)對象相對改變量包括數(shù)據(jù)對象相對物理改變量(以下簡稱相對物理改變量),數(shù)據(jù)對象相對邏輯改變量(以下簡稱相對邏輯改變量)等。其中,邏輯改變量包括插入(Insert)改變量、更新(Update)改變量以及刪除(Delete)改變量。hsert改變量,用于記錄自上次進(jìn)行數(shù)據(jù)對象分析、并將數(shù)據(jù)對象統(tǒng)計(jì)信息記錄在系統(tǒng)基表中后,對新數(shù)據(jù)對象進(jìn)行insert操作的次數(shù)。一般來說,進(jìn)行一次insert操作,就會(huì)增加一條數(shù)據(jù)對象記錄,并且根據(jù)數(shù)據(jù)對象當(dāng)前的狀況,還可能會(huì)引起數(shù)據(jù)對象的物理空間擴(kuò)展,因此,本實(shí)施例中,可以設(shè)置該Insert改變量在滿足設(shè)定的條件時(shí),并在有其它需要分析的數(shù)據(jù)對象時(shí),優(yōu)先對該^sert改變量對應(yīng)的數(shù)據(jù)對象進(jìn)行分析。Update改變量,用于記錄自上次進(jìn)行數(shù)據(jù)對象分析、并將數(shù)據(jù)對象的統(tǒng)計(jì)信息記錄在系統(tǒng)基表中后,對oracle數(shù)據(jù)庫中原有數(shù)據(jù)對象進(jìn)行update操作的次數(shù)。—般來說,正常的更新操作,不會(huì)對數(shù)據(jù)對象的物理結(jié)構(gòu)造成較大影響,但也不排除某些情況下,由于update前后數(shù)據(jù)對象值差異較大使得數(shù)據(jù)對象發(fā)生行遷移而對空間使用產(chǎn)生影響。因此,本實(shí)施例中,可以設(shè)置該Update改變量在滿足設(shè)定的條件時(shí),并在有其它需要分析的數(shù)據(jù)對象時(shí),可以先對其他需要分析的數(shù)據(jù)對象進(jìn)行分析。Delete改變量,用于記錄自上次進(jìn)行數(shù)據(jù)對象分析、并將數(shù)據(jù)對象的統(tǒng)計(jì)信息記錄在系統(tǒng)基表中后,對oracle數(shù)據(jù)庫中原有數(shù)據(jù)對象進(jìn)行Delete操作的次數(shù)。由于該Delete操作會(huì)減少oracle數(shù)據(jù)庫中數(shù)據(jù)對象的記錄數(shù),但是并不回收數(shù)據(jù)對象所占用的物理空間,容易造成實(shí)際數(shù)據(jù)對象數(shù)據(jù)量與數(shù)據(jù)對象空間占用量不成正比的現(xiàn)象,因此,本實(shí)施例中,可以設(shè)置該Delete改變量對應(yīng)的數(shù)據(jù)對象進(jìn)行分析的優(yōu)先級與hsert改變量的優(yōu)先級相同。所應(yīng)說明的是,將上述hsert改變量、Update改變量以及Delete改變量分別與oracle數(shù)據(jù)庫中記錄的數(shù)據(jù)對象總量相比就可以得到相應(yīng)的相對^sert改變量、相對Update改變量以及相對Delete改變量。上述hsert改變量、Update改變量以及Delete改變量三個(gè)改變量,均是通過oracle數(shù)據(jù)庫中的DML操作產(chǎn)生的,統(tǒng)稱為邏輯改變量,其中,insert操作對數(shù)據(jù)對象的物理空間擴(kuò)展有較為明顯的作用,delete操作會(huì)刪除oracle數(shù)據(jù)庫中的數(shù)據(jù)對象,但不會(huì)回收該數(shù)據(jù)對象所占用的物理空間,而update操作,一般情況下,對數(shù)據(jù)對象的影響不明顯。因而,三個(gè)改變量對應(yīng)的數(shù)據(jù)對象分析優(yōu)先級中,Insert改變量分析優(yōu)先級以及Delete改變量分析優(yōu)先級較高,Update改變量分析優(yōu)先級較低。由于邏輯改變量可以直接反映一個(gè)數(shù)據(jù)對象的物理空間改變情況,該物理改變量可以直接作為單獨(dú)的數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性評估標(biāo)準(zhǔn)。物理改變量包括數(shù)據(jù)對象所占用塊(blocks)大小、字節(jié)數(shù)(bytes)大小等。本實(shí)施例中,物理改變量主要體現(xiàn)在數(shù)據(jù)對象物理段的改變上。在對數(shù)據(jù)對象進(jìn)行統(tǒng)計(jì)信息收集時(shí),oracle數(shù)據(jù)庫會(huì)將當(dāng)前數(shù)據(jù)對象的物理改變量(物理使用狀況),例如,該數(shù)據(jù)對象所占用blocks大小,bytes大小等,記錄在oracle數(shù)據(jù)庫中相應(yīng)的存儲模塊中。后續(xù)中,如果數(shù)據(jù)對象發(fā)生變動(dòng),會(huì)在另外的存儲模塊中記錄該數(shù)據(jù)對象實(shí)時(shí)的物理使用狀況,通過兩個(gè)存儲模塊核心指標(biāo)(物理使用狀況)的對比,即可得到相應(yīng)的物理改變量,并可根據(jù)一定算法(例如,將總的物理改變量與系統(tǒng)基表中初始記錄的總數(shù)據(jù)對象的物理空間相比),計(jì)算出相對物理改變量。當(dāng)然,實(shí)際應(yīng)用中,前述的邏輯改變量也可能導(dǎo)致物理改變量的變化。由于物理改變量也可以直接反映一個(gè)數(shù)據(jù)對象的物理空間改變情況,該物理改變量可以直接作為單獨(dú)的數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性評估標(biāo)準(zhǔn)。結(jié)構(gòu)改變量,用于記錄數(shù)據(jù)對象的數(shù)據(jù)結(jié)構(gòu)的改變,如對系統(tǒng)基表執(zhí)行增加/刪除/修改字段操作,添加新的索引信息等,也會(huì)導(dǎo)致數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性的降低,在oracle數(shù)據(jù)庫中,該類結(jié)構(gòu)改變量操作統(tǒng)稱為DDL操作。本實(shí)施例中,該類結(jié)構(gòu)改變量,屬于單一性的結(jié)構(gòu)改變量,與物理改變量一樣,可作為單獨(dú)的數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性評估標(biāo)準(zhǔn)。上述的物理改變量、邏輯改變量以及結(jié)構(gòu)改變量,基本囊括了一個(gè)數(shù)據(jù)對象可能發(fā)生的各種改變。接著,再對本發(fā)明實(shí)施例涉及的數(shù)據(jù)對象相對改變量閾值進(jìn)行描述。從上述數(shù)據(jù)對象可能發(fā)生的改變量分析中可以得出,三種類型的改變量(物理改變量、邏輯改變量以及結(jié)構(gòu)改變量),均能單獨(dú)影響統(tǒng)計(jì)信息的可靠性。因此,本實(shí)施例中,對三種類型改變量的檢測評估采取相對獨(dú)立的方式,如果任一類型的改變量,達(dá)到檢測標(biāo)準(zhǔn)的數(shù)據(jù)對象相對改變量閥值,則認(rèn)為需要對系統(tǒng)基表中的數(shù)據(jù)對象統(tǒng)計(jì)信息進(jìn)行更新。本實(shí)施例中,與上述描述相對應(yīng),數(shù)據(jù)對象相對改變量閥值包括相對邏輯改變量閥值、相對物理改變量閥值以及結(jié)構(gòu)改變量閥值,其中,相對邏輯改變量閥值,根據(jù)不同DML操作對數(shù)據(jù)對象的影響,為相對^sert改變量閥值、相對Update改變量閥值以及相對Delete改變量閥值分配不同的分析策略標(biāo)準(zhǔn),也就是說,對于Delete操作和insert操作,既考慮絕對改變量,又考慮相對改變量;對于Update操作,僅考慮相對改變量。insert操作的分析策略標(biāo)準(zhǔn)具體實(shí)現(xiàn)邏輯為Insert絕對改變量大于50W次、且insert相對改變量大于3%;或者insert絕對改變量大于30W次、且insert相對改變量大于5%;或者insert絕對改變量大于IOW次、且insert相對改變量大于%;或者insert絕對改變量大于IW次、且insert相對改變量大于10%。也就說,設(shè)置的hsert絕對改變量閾值以及hsert相對改變量閥值分別為Insert操作次數(shù)大于50W次、且insert操作次數(shù)(記錄數(shù))超過oracle數(shù)據(jù)庫中數(shù)據(jù)對象原有記錄數(shù)的3%以上;或者insert操作次數(shù)大于30W次、且insert操作次數(shù)超過oracle數(shù)據(jù)庫中數(shù)據(jù)對象原有記錄數(shù)的5%以上;或者insert操作次數(shù)大于IOW次、且insert操作次數(shù)超過oracle數(shù)據(jù)庫中數(shù)據(jù)對象原有記錄數(shù)的7%以上;或者insert操作次數(shù)大于IW次、且insert操作次數(shù)超過oracle數(shù)據(jù)庫中數(shù)據(jù)對象原有記錄數(shù)的10%以上。符合上述條件中任意一條的數(shù)據(jù)對象,可以認(rèn)為,頻繁的insert操作已經(jīng)大大降低了該數(shù)據(jù)對象統(tǒng)計(jì)信息的可靠性。當(dāng)然,實(shí)際應(yīng)用中,也可以根據(jù)實(shí)際需要設(shè)置、調(diào)整hsert改變量,并根據(jù)insert相對改變量設(shè)置相應(yīng)的邏輯改變量閥值等級。上述inserts改變量閥值,即hsert絕對改變量閾值以及hsert相對改變量閥值的數(shù)學(xué)表達(dá)式如下(inserts>500000&(inserts/num_rows*100>3))|(inserts>300000&(inserts/num_rows*100>5))|(inserts>100000&(inserts/num_rows*100>7))|(inserts>10000&(inserts/num_rows*100>10))相應(yīng)的數(shù)據(jù)庫采集過濾代碼實(shí)現(xiàn)如下SELECTa.table_owner,a.table_nameFROM(selectu.nametable_owner,o.nametable_name,m.inserts,m.updates,m.deletesfromsys.mon—mods_all$m,sys.obj$o,sys.tab$t,sys.user$uwhereo.obj#=m.obj#ando,obj#=t.obj#ando.owner#=u.user#unionallselectu.nametable_owner,o.nametable_name,m.inserts,m.updates,m.deletesfromsys.mon—mods_all$m,sys.obj$o,sys.user$uwhereo.owner#=u.user#ando.obj#=m.obj#ando.type#=19unionallselectu.nametable_owner,o.nametable_name,m.inserts,m.updates,m.deletesfromsys.mon_mods_all$m,sys.obj$o,sys.tabsubpart$tsp,sys.obj$o2,sys.user$uwhereo.obj#=m.obj#ando.owner#=u.user#ando.obj#=tsp.ob)j#ando2.obj#=tsp.pobj#)a,dba一tablesbwherea.table—namenotlike'BIN$%'anda.table—ownerlike'%XXX%'anda.table_owner—.b.owneranda.table—name=b.tablenameandb.last—analyzedisnotnulland((a.inserts>500000anda.inserts/b.num_rows*100>3)or(a.inserts>300000anda.inserts/b.num_rows*100>5)or(a.inserts>100000anda.inserts/b.num_rows*100>7)or(a.inserts>10000anda.inserts/b.num—rows*100>10));其中,tablejwner,table_name等變量可根據(jù)應(yīng)用環(huán)境給予適當(dāng)?shù)馁x值,并可以根據(jù)實(shí)際需要,從系統(tǒng)基表中讀取其他項(xiàng)的信息執(zhí)行過濾,以滿足不同應(yīng)用環(huán)境的需求。相應(yīng)地,Delete操作的分析策略標(biāo)準(zhǔn)具體實(shí)現(xiàn)邏輯為Delete絕對改變量大于30W次、且Delete相對改變量大于3%;或者Delete絕對改變量大于20W次、且Delete相對改變量大于4%;或者Delete絕對改變量大于10W次、且Delete相對改變量大于5%;或者Delete絕對改變量大于IW次、且Delete相對改變量大于10%。也就說,Delete操作次數(shù)大于30W次、且delete操作次數(shù)超過oracle數(shù)據(jù)庫中數(shù)據(jù)對象原有記錄數(shù)3%以上;或者Delete操作次數(shù)大于20W次、且Delete操作次數(shù)超過oracle數(shù)據(jù)庫中數(shù)據(jù)對象原有記錄數(shù)4%以上;或者Delete操作次數(shù)大于10W次、且Delete操作次數(shù)超過oracle數(shù)據(jù)庫中數(shù)據(jù)對象原有記錄數(shù)5%以上;或者Delete操作次數(shù)大于IW次、且Delete操作次數(shù)超過oracle數(shù)據(jù)庫中數(shù)據(jù)對象的原有記錄數(shù)10%以上。與前述相同,符合上述條件中任意一條的數(shù)據(jù)對象,可以認(rèn)為,頻繁的Delete操作已經(jīng)大大降低了該數(shù)據(jù)對象統(tǒng)計(jì)信息的可靠性。上述Delete改變量閥值的數(shù)學(xué)表達(dá)式如下(Deletes>300000&(Deletes/num_rows*100>3))|(Deletes>200000&(Deletes/num_rows*100>4))|(Deletes>100000&(Deletes/num_rows*100>5))|(Deletes>10000&(Deletes/num_rows*100>10))相應(yīng)的數(shù)據(jù)庫采集過濾代碼實(shí)現(xiàn)如下SELECTa.table_owner,a.table_nameFROM(selectu.nametable_owner,o.nametable_name,m.inserts,m.updates,m.deletesfromsys.mon_mods_all$m,sys.obj$o,sys.tab$t,sys.user$uwhereo.obj#=m.obj#ando.obj#=t.obj#ando.owner#=u.user#unionallselectu.nametable_owner,o.nametable_name,m.inserts,m.updates,m.deletesfromsys.mon_mods—all$m,sys.obj$o,sys.user$uwhereo.owner#=u.user#ando.obj#=m.obj#ando.type#=19unionallselectu.nametable_owner,o.nametable—name,m.inserts,m.updates,m.deletesfromsys.mon_mods_all$m,sys.obj$o,sys.tabsubpart$tsp,sys.obj$o2,sys.user$uwhereo.obj#=m.obj#ando.owner#=u.user#ando.obj#=tsp.ot)j#ando2.obj#=tsp.pobj#)a,dba—tablesbwherea.table_namenotlike’BIN$%’anda.table_ownerlike'%XXX%'anda.table_owner-b.owneranda.table_name=b.table_nameandb.lastanalyzedisnotnulland((a.deletes>300000anda.deletes/b.num_rows*100>3)or(a.deletes>200000anda.deletes/b.num_rows*100>4)or(a.deletes>100000anda.deletes/b.numrows*100>5)or(a.deletes>10000anda.deletes/b.num—rows*100>10));對于Update操作,如前所述,由于其對數(shù)據(jù)對象統(tǒng)計(jì)信息的可靠性影響較小,因此,本實(shí)施例中,Update操作次數(shù)(記錄數(shù))僅考慮相對量的改變,只有當(dāng)Update操作次數(shù)超過oracle數(shù)據(jù)庫中數(shù)據(jù)對象原有記錄數(shù)10%以上時(shí),認(rèn)為該頻繁的Update操作已經(jīng)大大降低了該數(shù)據(jù)對象統(tǒng)計(jì)信息的可靠性。當(dāng)然,實(shí)際應(yīng)用中,也可以綜合考慮Update改變量以及Update相對改變量,并設(shè)置多級具體的實(shí)現(xiàn)邏輯。本實(shí)施例中,Update改變量閥值的數(shù)學(xué)表達(dá)式如下(Updates/num_rows*100>10)相應(yīng)的數(shù)據(jù)庫采集過濾代碼實(shí)現(xiàn)如下SELECTa.table_owner,a.table_nameFROM(selectu.nametable_owner,o.nametable_name,m.inserts,m.updates,m.deletesfromsys.mon—mods_all$m,sys.obj$o,sys.tab$t,sys.user$uwhereo.obj#=m.obj#ando.obj#=t.obj#ando.owner#二u.user#unionallselectu.nametable_owner,o.nametable—name,m.inserts,m.updates,m.deletesfromsys.mon_mods_all$m,sys.obj$o,sys.user$uwhereo.owner#=u.user#ando.obj#=m.obj#ando.type#=19unionallselectu.nametable—owner,o.nametable_name,m.inserts,m.updates,m.deletesfromsys.mon—mods_all$m,sys.obj$ο,sys.tabsubpart$tsp,sys.obj$o2,sys.user$uwhereo.obj#=m.obj#ando.owner#=u.user#ando.obj#=tsp.obj#ando2.obj#=tsp.pobj#)a,dba—tablesbwherea.table_namenotlike'BIN$%'anda.table_ownerlike'%XXX%'anda.table_owner=b.owneranda.table_name=b.table_nameandb.last—analyzedisnotnullanda.updates/b.num_rows*100>10;物理改變量閥值,用于表征數(shù)據(jù)對象當(dāng)前block數(shù)與存儲模塊中所記錄的前次收集統(tǒng)計(jì)信息時(shí)block數(shù)差異的臨界值。當(dāng)數(shù)據(jù)對象當(dāng)前block數(shù)或byte數(shù)與存儲模塊中所記錄的前次收集統(tǒng)計(jì)信息時(shí)block數(shù)或byte數(shù)差異大于物理改變量閥值時(shí),可以認(rèn)為,物理blocks或byte的改變量,已經(jīng)降低了統(tǒng)計(jì)信息的可靠性。根據(jù)經(jīng)驗(yàn)值,以blocks為例,當(dāng)數(shù)據(jù)對象blocks小于1000時(shí),該數(shù)據(jù)對象可以被視為小對象,對數(shù)據(jù)庫統(tǒng)計(jì)信息可靠性影響較小。因此,本實(shí)施例中,物理改變量閥值的具體實(shí)現(xiàn)邏輯為數(shù)據(jù)對象的物理blocks大于1000、且物理blocks的改變量超過該數(shù)據(jù)對象原有物理blocks的5%以上。物理改變量閥值的數(shù)學(xué)表達(dá)式如下(abs((blocks_in_stats_blocks_now)/blocks_in_stats)*100>5&blocks_now>1000)II(statsisnull&blocksnow>1000)相應(yīng)地,數(shù)據(jù)庫采集過濾代碼實(shí)現(xiàn)如下selecta.owner,a.segment—name,a.blocksblk—now,nvl(decode(b.blocks,0,8,b.blocks),8)blk_in—stats,trunc((a.blocks-nvl(decode(b.blocks,0,8,b.blocks),8))*100/nvl(decode(b.blocks,0,8,b.blocks),8),2)Il’%’blk_chg_perfromdba—segmentsa,dba_tablesbwherea.segment_type='TABLE'anda.segment_namenotlike'BIN$%'anda.owner=b.owneranda.ownerlike'%XXX%'anda.segment_name=b.table—nameand(b.last_analyzedisnullorabs(a.blocks-b.blocks)*100/nvl(decode(b.blocks,0,8,b.blocks),8)>10)anda.blocks>1000orderbya.owner,trunc((a.blocks-nvl(decode(b.blocks,0,8,b.blocks),1))*100/nvl(decode(b.blocks,0,8,b.blocks),8),2)desc;與邏輯改變量閥值一樣,對于table_0wner等變量,可根據(jù)實(shí)際應(yīng)用需要進(jìn)行賦值,并可以根據(jù)不同應(yīng)用環(huán)境的需求,添力卩、刪除相應(yīng)的信息。此外,對于尚未收集過統(tǒng)計(jì)信息的新建數(shù)據(jù)對象,如果該數(shù)據(jù)對象物理blocks大于1000,也認(rèn)為該數(shù)據(jù)對象降低了統(tǒng)計(jì)信息的可靠性。結(jié)構(gòu)改變量閥值,對于該結(jié)構(gòu)類型改變,統(tǒng)稱為DDL操作,屬于單一性的結(jié)構(gòu)改變量,因此,閥值標(biāo)準(zhǔn)較為簡單,其具體實(shí)現(xiàn)邏輯為判斷數(shù)據(jù)對象自前次分析后,是否發(fā)生過DDL操作,如果是,該數(shù)據(jù)對象統(tǒng)計(jì)信息失效。結(jié)構(gòu)改變量閥值的數(shù)學(xué)表達(dá)式如下Last_ddl_date>last_analyzed—date相應(yīng)的數(shù)據(jù)庫采集過濾代碼實(shí)現(xiàn)如下權(quán)利要求1.一種提高數(shù)據(jù)庫中數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性的方法,其特征在于,該方法包括A、接收數(shù)據(jù)對象,根據(jù)接收的數(shù)據(jù)對象信息以及預(yù)先存儲的數(shù)據(jù)對象信息,獲取數(shù)據(jù)對象絕對改變量以及數(shù)據(jù)對象相對改變量,并存儲該接收的數(shù)據(jù)對象以及數(shù)據(jù)對象名稱;B、判斷累計(jì)的數(shù)據(jù)對象絕對改變量以及數(shù)據(jù)對象相對改變量是否超過預(yù)先設(shè)定的數(shù)據(jù)對象改變量閾值,如果是,執(zhí)行C,否則,返回執(zhí)行步驟A;C、調(diào)用預(yù)先設(shè)定的分析策略,對數(shù)據(jù)庫中存儲的數(shù)據(jù)對象進(jìn)行可靠性掃描,獲取與存儲的數(shù)據(jù)對象名稱相同的數(shù)據(jù)對象;D、調(diào)用分析程序?qū)Λ@取的數(shù)據(jù)對象進(jìn)行處理,獲取數(shù)據(jù)對象統(tǒng)計(jì)信息并更新存儲數(shù)據(jù)對象統(tǒng)計(jì)信息的系統(tǒng)基表。2.如權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)對象相對改變量為自數(shù)據(jù)庫上一次更新后發(fā)生變化的數(shù)據(jù)對象絕對改變量與數(shù)據(jù)庫上一次更新時(shí)存儲的數(shù)據(jù)對象量的比值。3.如權(quán)利要求2所述的方法,其特征在于,所述數(shù)據(jù)對象相對改變量包括相對物理改變量和相對邏輯改變量;所述數(shù)據(jù)對象絕對改變量包括絕對物理改變量、絕對邏輯改變量和結(jié)構(gòu)改變量。4.如權(quán)利要求3所述的方法,其特征在于,所述相對邏輯改變量包括插入相對改變量、更新相對改變量以及刪除相對改變量;所述相對物理改變量包括數(shù)據(jù)對象塊相對改變量;所述絕對物理改變量包括數(shù)據(jù)對象塊絕對改變量;所述絕對邏輯改變量包括插入絕對改變量以及刪除絕對改變量;所述結(jié)構(gòu)改變量為對系統(tǒng)基表執(zhí)行增加/刪除/修改字段操作以及添加新的索引信息導(dǎo)致的數(shù)據(jù)結(jié)構(gòu)改變。5.如權(quán)利要求4所述的方法,其特征在于,所述插入相對改變量為自上次進(jìn)行數(shù)據(jù)對象分析后,對數(shù)據(jù)對象進(jìn)行插入操作的記錄數(shù)與總的記錄數(shù)的比值;所述更新相對改變量為自上次進(jìn)行數(shù)據(jù)對象分析后,對數(shù)據(jù)庫中原有數(shù)據(jù)對象進(jìn)行更新操作的記錄數(shù)與總的記錄數(shù)的比值;所述刪除相對改變量為自上次進(jìn)行數(shù)據(jù)對象分析后,對數(shù)據(jù)庫中原有數(shù)據(jù)對象進(jìn)行刪除操作的記錄數(shù)與總的記錄數(shù)的比值;所述數(shù)據(jù)對象塊相對改變量為自上次進(jìn)行數(shù)據(jù)對象分析后,數(shù)據(jù)對象塊大小改變量與數(shù)據(jù)庫中數(shù)據(jù)對象塊總大小的比值。6.如權(quán)利要求5所述的方法,其特征在于,所述數(shù)據(jù)對象改變量閾值包括數(shù)據(jù)對象絕對改變量閥值和數(shù)據(jù)對象相對改變量閥值;所述判斷累計(jì)的數(shù)據(jù)對象絕對改變量以及數(shù)據(jù)對象相對改變量是否超過預(yù)先設(shè)定的數(shù)據(jù)對象改變量閾值包括判斷累計(jì)的數(shù)據(jù)對象絕對改變量是否超過預(yù)先設(shè)定的數(shù)據(jù)對象絕對改變量閾值、且累計(jì)的數(shù)據(jù)對象相對改變量是否超過預(yù)先設(shè)定的數(shù)據(jù)對象相對改變量閾值。7.如權(quán)利要求6所述的方法,其特征在于,所述判斷累計(jì)的數(shù)據(jù)對象絕對改變量以及數(shù)據(jù)對象相對改變量是否超過預(yù)先設(shè)定的數(shù)據(jù)對象改變量閾值包括判斷累計(jì)的插入絕對改變量是否超過預(yù)先設(shè)定的插入絕對改變量閾值、且累計(jì)的插入相對改變量是否超過預(yù)先設(shè)定的插入相對改變量閾值;或,判斷累計(jì)的刪除絕對改變量是否超過預(yù)先設(shè)定的刪除絕對改變量閾值、且累計(jì)的刪除相對改變量是否超過預(yù)先設(shè)定的刪除相對改變量閾值;或,判斷累計(jì)的更新相對改變量是否超過預(yù)先設(shè)定的更新相對改變量閾值;或,判斷累計(jì)的數(shù)據(jù)對象塊絕對改變量是否超過預(yù)先設(shè)定的數(shù)據(jù)對象塊絕對改變量閾值、且累計(jì)的數(shù)據(jù)對象塊相對改變量是否超過預(yù)先設(shè)定的數(shù)據(jù)對象塊相對改變量閾值;或,判斷數(shù)據(jù)對象自上次分析后,是否發(fā)生過數(shù)據(jù)定義語言操作。8.一種提高數(shù)據(jù)庫中數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性的裝置,其特征在于,該裝置包括數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性檢測單元、數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性獲取單元以及數(shù)據(jù)對象統(tǒng)計(jì)信息存儲單元,其中,數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性檢測單元,用于根據(jù)當(dāng)前操作的數(shù)據(jù)對象信息與預(yù)先存儲的數(shù)據(jù)對象信息獲取該數(shù)據(jù)對象改變量信息并存儲該數(shù)據(jù)對象以及該數(shù)據(jù)對象名稱,如果累計(jì)的數(shù)據(jù)對象改變量超過預(yù)先設(shè)定的數(shù)據(jù)對象改變量閾值,將存儲的數(shù)據(jù)對象名稱輸出至數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性獲取單元;數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性獲取單元,用于按照預(yù)先設(shè)定的分析策略從存儲的數(shù)據(jù)對象中獲取與接收的數(shù)據(jù)對象名稱相同的數(shù)據(jù)對象,獲取相應(yīng)的數(shù)據(jù)對象統(tǒng)計(jì)信息,發(fā)送至數(shù)據(jù)對象統(tǒng)計(jì)信息存儲單元;數(shù)據(jù)對象統(tǒng)計(jì)信息存儲單元,接收來自數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性獲取單元的數(shù)據(jù)對象統(tǒng)計(jì)信息并存儲。9.如權(quán)利要求8所述的裝置,其特征在于,所述數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性檢測單元包括數(shù)據(jù)對象接收模塊、數(shù)據(jù)對象存儲模塊、數(shù)據(jù)對象處理模塊、數(shù)據(jù)對象名稱存儲模塊、數(shù)據(jù)對象發(fā)送模塊以及數(shù)據(jù)對象改變量閾值存儲模塊,其中,數(shù)據(jù)對象接收模塊,用于接收數(shù)據(jù)對象,輸出至數(shù)據(jù)對象處理模塊;數(shù)據(jù)對象處理模塊,用于根據(jù)接收的數(shù)據(jù)對象以及數(shù)據(jù)對象存儲模塊存儲的相應(yīng)數(shù)據(jù)對象信息,獲取數(shù)據(jù)對象改變量信息,將該數(shù)據(jù)對象輸出至數(shù)據(jù)對象存儲模塊并將該數(shù)據(jù)對象名稱輸出至數(shù)據(jù)對象名稱存儲模塊;判斷累計(jì)的數(shù)據(jù)對象改變量是否超過數(shù)據(jù)對象改變量閾值存儲模塊存儲的數(shù)據(jù)對象改變量閾值,如果是,從數(shù)據(jù)對象存儲模塊中獲取與數(shù)據(jù)對象名稱存儲模塊存儲的數(shù)據(jù)對象名稱相同的數(shù)據(jù)對象,輸出至數(shù)據(jù)對象發(fā)送模塊;數(shù)據(jù)對象存儲模塊,預(yù)先存儲有數(shù)據(jù)對象,用于接收數(shù)據(jù)對象處理模塊輸出的數(shù)據(jù)對象,更新相應(yīng)數(shù)據(jù)對象;數(shù)據(jù)對象發(fā)送模塊,用于將接收的數(shù)據(jù)對象發(fā)送至外部的數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性獲取單元;數(shù)據(jù)對象改變量閾值存儲模塊,用于存儲數(shù)據(jù)對象改變量閾值。全文摘要本發(fā)明公開了一種提高數(shù)據(jù)庫中數(shù)據(jù)對象統(tǒng)計(jì)信息可靠性的方法及裝置,接收數(shù)據(jù)對象,根據(jù)接收的數(shù)據(jù)對象信息以及預(yù)先存儲的數(shù)據(jù)對象信息,獲取數(shù)據(jù)對象絕對改變量以及數(shù)據(jù)對象相對改變量,并存儲該接收的數(shù)據(jù)對象以及數(shù)據(jù)對象名稱;判斷累計(jì)的數(shù)據(jù)對象絕對改變量以及數(shù)據(jù)對象相對改變量是否超過預(yù)先設(shè)定的數(shù)據(jù)對象改變量閾值,如果是,調(diào)用預(yù)先設(shè)定的分析策略,對數(shù)據(jù)庫中存儲的數(shù)據(jù)對象進(jìn)行可靠性掃描,獲取與存儲的數(shù)據(jù)對象名稱相同的數(shù)據(jù)對象;調(diào)用分析程序?qū)Λ@取的數(shù)據(jù)對象進(jìn)行處理,獲取數(shù)據(jù)對象統(tǒng)計(jì)信息并更新存儲數(shù)據(jù)對象統(tǒng)計(jì)信息的系統(tǒng)基表。應(yīng)用本發(fā)明,可以降低數(shù)據(jù)庫維護(hù)成本、提高數(shù)據(jù)庫中數(shù)據(jù)對象統(tǒng)計(jì)信息的查詢命中率。文檔編號G06F17/30GK102063449SQ20091023786公開日2011年5月18日申請日期2009年11月12日優(yōu)先權(quán)日2009年11月12日發(fā)明者李杰毅,王曉征,肖愛元申請人:中國移動(dòng)通信集團(tuán)浙江有限公司