本發(fā)明涉及計(jì)算機(jī)
技術(shù)領(lǐng)域:
,具體地說(shuō)是一種通過(guò)動(dòng)態(tài)分析創(chuàng)建數(shù)據(jù)庫(kù)索引的方法。
背景技術(shù):
:在傳統(tǒng)管理軟件產(chǎn)品中,表索引的創(chuàng)建均是根據(jù)開(kāi)發(fā)者的設(shè)計(jì)及應(yīng)用預(yù)估為依據(jù)。目前功能開(kāi)發(fā)靈活性較大,查詢(xún)條件設(shè)置相當(dāng)靈活。受功能需求擴(kuò)展及人員分工、流動(dòng)的影響,不同的人會(huì)對(duì)于同一個(gè)表進(jìn)行應(yīng)用開(kāi)發(fā)。這種模式下,對(duì)于數(shù)據(jù)表索引的創(chuàng)建就會(huì)顯得不可預(yù)知,同時(shí)可能相互負(fù)面影響,增大查詢(xún)成本?;诖耍景l(fā)明提供一種通過(guò)動(dòng)態(tài)分析創(chuàng)建數(shù)據(jù)庫(kù)索引的方法,本發(fā)明抽象了查詢(xún)SQL語(yǔ)句的結(jié)構(gòu),對(duì)應(yīng)用頻率進(jìn)行大數(shù)據(jù)統(tǒng)計(jì)分析,依據(jù)實(shí)際應(yīng)用情況創(chuàng)建合理的表索引,達(dá)到提高表的查詢(xún)效率。可以匹配目前應(yīng)用開(kāi)發(fā)所常用的數(shù)據(jù)庫(kù)管理系統(tǒng),及應(yīng)用這些的管理應(yīng)用軟件。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的技術(shù)任務(wù)是針對(duì)以上不足之處,提供一種通過(guò)動(dòng)態(tài)分析創(chuàng)建數(shù)據(jù)庫(kù)索引的方法。一種通過(guò)動(dòng)態(tài)分析創(chuàng)建數(shù)據(jù)庫(kù)索引的方法,其實(shí)現(xiàn)過(guò)程為:捕獲數(shù)據(jù)庫(kù)執(zhí)行語(yǔ)句,解析查詢(xún)結(jié)構(gòu);設(shè)置查詢(xún)結(jié)構(gòu)計(jì)數(shù)器模型,將解析后數(shù)值放入計(jì)數(shù)器中;設(shè)置計(jì)數(shù)閾值,計(jì)數(shù)器達(dá)到閾值范圍,檢查數(shù)據(jù)表的索引情況;根據(jù)索引檢查情況及處理策略,創(chuàng)建及調(diào)整數(shù)據(jù)表索引。捕獲數(shù)據(jù)庫(kù)執(zhí)行語(yǔ)句是指捕獲所有執(zhí)行的查詢(xún)SQL,捕獲方式為應(yīng)用程序數(shù)據(jù)庫(kù)執(zhí)行過(guò)程過(guò)濾或數(shù)據(jù)庫(kù)工具執(zhí)行分析,通過(guò)查詢(xún)SQL特點(diǎn),通過(guò)字符串處理策略對(duì)語(yǔ)句進(jìn)行解析。所述SQL組件在數(shù)據(jù)庫(kù)表中預(yù)制并且由該數(shù)據(jù)庫(kù)表提供,用于捕捉特定表執(zhí)行的查詢(xún)語(yǔ)句,在進(jìn)行查詢(xún)執(zhí)行的時(shí)候,將這些SQL捕獲并記錄;此外,數(shù)據(jù)庫(kù)表還提供對(duì)數(shù)據(jù)庫(kù)查詢(xún)緩存進(jìn)行檢索,收集對(duì)特定表的查詢(xún)語(yǔ)句。解析查詢(xún)結(jié)構(gòu)是指將查詢(xún)動(dòng)作進(jìn)行解析,一個(gè)查詢(xún)動(dòng)作可提取若干關(guān)鍵字,該關(guān)鍵字包括查詢(xún)、排序、分組、過(guò)濾的字段組合,然后記錄SQL語(yǔ)句結(jié)構(gòu)分析結(jié)果及頻次,最后將每個(gè)關(guān)鍵組合的出現(xiàn)頻率進(jìn)行計(jì)數(shù)。閾值設(shè)置是指設(shè)置對(duì)表的某個(gè)關(guān)鍵組合的訪問(wèn)頻次的上限,以及各關(guān)鍵組合的最大訪問(wèn)時(shí)間。根據(jù)索引檢查情況及處理策略創(chuàng)建數(shù)據(jù)表索引是指根據(jù)索引比對(duì)情況及處理策略,動(dòng)態(tài)調(diào)整數(shù)據(jù)表索引,即將索引處理方式抽象成一個(gè)接口,其中包含查詢(xún)、閾值比對(duì)、關(guān)鍵組合對(duì)比、撤銷(xiāo)、新建的處理方式,以滿(mǎn)足索引優(yōu)化服務(wù);同時(shí)檢測(cè)閾值范圍、索引處理方式及查詢(xún)語(yǔ)句執(zhí)行性能分析,進(jìn)行索引動(dòng)態(tài)日志查看服務(wù),以便進(jìn)行包括調(diào)整閾值、系統(tǒng)維護(hù)日志的工作。本發(fā)明的一種通過(guò)動(dòng)態(tài)分析創(chuàng)建數(shù)據(jù)庫(kù)索引的方法和現(xiàn)有技術(shù)相比,具有以下有益效果:本發(fā)明的一種通過(guò)動(dòng)態(tài)分析創(chuàng)建數(shù)據(jù)庫(kù)索引的方法以系統(tǒng)用戶(hù)實(shí)際使用情況,更貼近應(yīng)用實(shí)際,更易解決實(shí)際問(wèn)題;根據(jù)實(shí)際應(yīng)用情況,可以隨時(shí)應(yīng)變,隨時(shí)調(diào)整,更適應(yīng)不同時(shí)間段不同應(yīng)用場(chǎng)景的需求;更易于系統(tǒng)管理員維護(hù),直觀的功能處理展示更易上手;適用范圍廣泛,易于推廣。附圖說(shuō)明附圖1為本發(fā)明方法中索引動(dòng)態(tài)創(chuàng)建過(guò)程圖。具體實(shí)施方式下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。如附圖1所示,本發(fā)明的一種通過(guò)動(dòng)態(tài)分析創(chuàng)建數(shù)據(jù)庫(kù)索引的方法,具體而言是指如何通過(guò)一種方法,無(wú)須系統(tǒng)開(kāi)發(fā)人員或維護(hù)人員實(shí)時(shí)進(jìn)行表索引的優(yōu)化操作,根據(jù)數(shù)據(jù)表查詢(xún)應(yīng)用情況動(dòng)態(tài)更新表索引。特別適合于基于表的產(chǎn)品和不斷進(jìn)行功能增強(qiáng)的連續(xù)開(kāi)發(fā)的情景。從而使軟件產(chǎn)品更加符合使用者的要求,在一定程度上做到隨需應(yīng)變。其實(shí)現(xiàn)過(guò)程為:捕獲數(shù)據(jù)庫(kù)執(zhí)行語(yǔ)句,解析查詢(xún)結(jié)構(gòu);設(shè)置查詢(xún)結(jié)構(gòu)計(jì)數(shù)器模型,將解析后數(shù)值放入計(jì)數(shù)器中;設(shè)置計(jì)數(shù)閾值,計(jì)數(shù)器達(dá)到閾值范圍,檢查數(shù)據(jù)表的索引情況;根據(jù)索引檢查情況及處理策略,創(chuàng)建及調(diào)整數(shù)據(jù)表索引。捕獲數(shù)據(jù)庫(kù)執(zhí)行語(yǔ)句是指捕獲所有執(zhí)行的查詢(xún)SQL,捕獲方式為應(yīng)用程序數(shù)據(jù)庫(kù)執(zhí)行過(guò)程過(guò)濾或數(shù)據(jù)庫(kù)工具執(zhí)行分析,通過(guò)查詢(xún)SQL特點(diǎn),通過(guò)字符串處理策略對(duì)語(yǔ)句進(jìn)行解析。所述SQL組件在數(shù)據(jù)庫(kù)表中預(yù)制并且由該數(shù)據(jù)庫(kù)表提供,用于捕捉特定表執(zhí)行的查詢(xún)語(yǔ)句,在進(jìn)行查詢(xún)執(zhí)行的時(shí)候,將這些SQL捕獲并記錄;此外,數(shù)據(jù)庫(kù)表還提供對(duì)數(shù)據(jù)庫(kù)查詢(xún)緩存進(jìn)行檢索,收集對(duì)特定表的查詢(xún)語(yǔ)句。解析查詢(xún)結(jié)構(gòu)是指將查詢(xún)動(dòng)作進(jìn)行解析,一個(gè)查詢(xún)動(dòng)作可提取若干關(guān)鍵字,該關(guān)鍵字包括查詢(xún)、排序、分組、過(guò)濾的字段組合,然后記錄SQL語(yǔ)句結(jié)構(gòu)分析結(jié)果及頻次,最后將每個(gè)關(guān)鍵組合的出現(xiàn)頻率進(jìn)行計(jì)數(shù)。閾值設(shè)置是指設(shè)置對(duì)表的某個(gè)關(guān)鍵組合的訪問(wèn)頻次的上限,以及各關(guān)鍵組合的最大訪問(wèn)時(shí)間。根據(jù)索引檢查情況及處理策略創(chuàng)建數(shù)據(jù)表索引是指根據(jù)索引比對(duì)情況及處理策略,動(dòng)態(tài)調(diào)整數(shù)據(jù)表索引,即將索引處理方式抽象成一個(gè)接口,其中包含查詢(xún)、閾值比對(duì)、關(guān)鍵組合對(duì)比、撤銷(xiāo)、新建的處理方式,以滿(mǎn)足索引優(yōu)化服務(wù);同時(shí)檢測(cè)閾值范圍、索引處理方式及查詢(xún)語(yǔ)句執(zhí)行性能分析,進(jìn)行索引動(dòng)態(tài)日志查看服務(wù),輔助系統(tǒng)維護(hù)人員調(diào)整閾值、系統(tǒng)維護(hù)日志等工作。實(shí)施例:1)動(dòng)態(tài)索引創(chuàng)建總體工作流程,如附圖1所示。2)跟蹤表及閾值預(yù)置的實(shí)現(xiàn)過(guò)程如下:設(shè)計(jì)可用字符串連接字段,用表SIBASE記錄。字段編號(hào)字段名稱(chēng)字段類(lèi)型說(shuō)明SIBASE_TABLE邏輯表名Varchar(30)唯一表名SIBASE_MINNUM閾值起始Int最小計(jì)數(shù)值SIBASE_MAXNUM閾值終止Int最大計(jì)數(shù)值SIBASE_TIME執(zhí)行時(shí)間Int以毫秒為單位記錄執(zhí)行上限SIBASE_TABLE字段記錄需要進(jìn)行動(dòng)態(tài)索引創(chuàng)建的表;SIBASE_MINNUM字段用于設(shè)置計(jì)數(shù)最小值,低于此值,相關(guān)索引刪除;SIBASE_MAXNUM字段用于設(shè)置計(jì)數(shù)最大值,高于此值,相關(guān)索引創(chuàng)建;SIBASE_TIME字段用于設(shè)置SQL執(zhí)行時(shí)間最大值,高于此值,計(jì)數(shù)雙倍加速。3)SQL結(jié)構(gòu)分析及記錄。設(shè)計(jì)表SISTRUCT用來(lái)記錄,表的結(jié)構(gòu)如下:4)閾值比對(duì)及索引動(dòng)態(tài)處理。根據(jù)B表中的閾值記錄,對(duì)C表中的計(jì)數(shù)進(jìn)行比對(duì),當(dāng)C表中某項(xiàng)組合的計(jì)數(shù)范圍,超過(guò)了B表中設(shè)置的閾值最大值,則創(chuàng)建索引;同時(shí)對(duì)表的已建索引同B、C表進(jìn)行比對(duì)校驗(yàn),如果計(jì)數(shù)未達(dá)到,進(jìn)行刪除。此處理邏輯,通過(guò)自動(dòng)調(diào)度每天凌晨系統(tǒng)空閑時(shí)進(jìn)行。5)動(dòng)態(tài)索引日志查看。功能圖形如下:通過(guò)上面具體實(shí)施方式,所述
技術(shù)領(lǐng)域:
的技術(shù)人員可容易的實(shí)現(xiàn)本發(fā)明。但是應(yīng)當(dāng)理解,本發(fā)明并不限于上述的具體實(shí)施方式。在公開(kāi)的實(shí)施方式的基礎(chǔ)上,所述
技術(shù)領(lǐng)域:
的技術(shù)人員可任意組合不同的技術(shù)特征,從而實(shí)現(xiàn)不同的技術(shù)方案。除說(shuō)明書(shū)所述的技術(shù)特征外,均為本專(zhuān)業(yè)技術(shù)人員的已知技術(shù)。當(dāng)前第1頁(yè)1 2 3