田彬
摘要 數(shù)據(jù)庫系統(tǒng)隨著其數(shù)據(jù)量的增加,響應(yīng)時(shí)間與吞吐率會(huì)受到影響,從而給整個(gè)信息化系統(tǒng)的性能與用戶體驗(yàn)帶來阻礙,所以,就需要對(duì)查詢過程進(jìn)行優(yōu)化。本文以標(biāo)準(zhǔn)化服務(wù)平臺(tái)系統(tǒng)的應(yīng)用開發(fā)為依托,對(duì)不同業(yè)務(wù)需要情況下的三種Oracle查詢優(yōu)化策略進(jìn)行詳細(xì)立闡述,即:基于ORACLE平臺(tái)的全文索引技術(shù),可以有效提高數(shù)據(jù)庫管理中的題錄查詢速度;基于ORACLE平臺(tái)的快速刷新物化視圖技術(shù),可以有效提高整個(gè)數(shù)據(jù)庫系統(tǒng)的年檢查詢速度;基于ORACLE平臺(tái)中的Job定時(shí)任務(wù),可以對(duì)標(biāo)準(zhǔn)狀態(tài)進(jìn)行有效的自動(dòng)修改。
【關(guān)鍵詞】Oracle查詢優(yōu)化 全文索引 物化視圖 標(biāo)準(zhǔn)化
1 引言
文中所涉及到的標(biāo)準(zhǔn)化服務(wù)平臺(tái),是由標(biāo)準(zhǔn)化服務(wù)中心面向社會(huì)廣大企業(yè)所提供的一種標(biāo)準(zhǔn)化信息研究、咨詢以及跟蹤的信息化綜合服務(wù)平臺(tái),可以為各項(xiàng)業(yè)務(wù)與服務(wù)的標(biāo)準(zhǔn)化、網(wǎng)絡(luò)化以及信息化提供支持,提升實(shí)際中的工作效率,增強(qiáng)職能部門對(duì)相關(guān)領(lǐng)域的監(jiān)督機(jī)制,并達(dá)到對(duì)資源進(jìn)行高效利用和為企業(yè)社會(huì)更好地服務(wù)的目的。這里,標(biāo)準(zhǔn)化服務(wù)中心主要負(fù)責(zé)為全社會(huì)提供標(biāo)準(zhǔn)化的信息服務(wù)、標(biāo)準(zhǔn)化的技術(shù)法規(guī)服務(wù)、物品編碼印制服務(wù)以及經(jīng)濟(jì)分析與管理中所需要的各類組織機(jī)構(gòu)代碼與服務(wù)等。
根據(jù)不同的應(yīng)用與業(yè)務(wù)需求,對(duì)標(biāo)準(zhǔn)化服務(wù)平臺(tái)中的Oracle數(shù)據(jù)庫查詢操作進(jìn)行優(yōu)化的技術(shù)主要有三種,分別是:
(1)利用Oracle中的全文索引來對(duì)題錄信息查詢速度的提升;
(2)利用Oracle中的物化視圖快速刷新技術(shù)來實(shí)現(xiàn)年檢查詢速率的提升;
(3)利用Oracle中的Job定時(shí)任務(wù)來實(shí)現(xiàn)標(biāo)準(zhǔn)狀態(tài)的自動(dòng)調(diào)整與修改。本文將對(duì)這三種技術(shù)的應(yīng)用進(jìn)行詳細(xì)說明。
2 基于Oracle全文索引的數(shù)據(jù)庫查詢
2.1 業(yè)務(wù)說明
在標(biāo)準(zhǔn)化服務(wù)平臺(tái)中,其基礎(chǔ)性數(shù)據(jù)主要為題錄數(shù)據(jù),比如標(biāo)準(zhǔn)體系中常見的國標(biāo)、行標(biāo)、企標(biāo)以及國外題錄等,而與這些題錄數(shù)據(jù)相關(guān)的屬性則主要包括:標(biāo)準(zhǔn)號(hào)、組織、狀態(tài)、性質(zhì)、發(fā)布日期、實(shí)施日期、中英文名稱等;對(duì)于數(shù)據(jù)庫中的相關(guān)對(duì)象,其屬性則主要有ICS分類碼、國際分類碼、替代標(biāo)準(zhǔn)、采用標(biāo)準(zhǔn)等。就目前而言,存儲(chǔ)于題錄數(shù)據(jù)庫中的數(shù)據(jù)量已經(jīng)達(dá)到千萬量級(jí),且還在不斷的增加,從而使得題錄的數(shù)據(jù)量逐漸增加。而在應(yīng)用中,則需要依據(jù)屬性的特性數(shù)據(jù)進(jìn)行查詢,在標(biāo)準(zhǔn)化平臺(tái)中輸入查詢條件后,需要確保整個(gè)系統(tǒng)的響應(yīng)時(shí)間控制在1秒以內(nèi)。
2.2 0racle全文索引
考慮到題錄的數(shù)據(jù)量處于不斷增加的狀態(tài),且已經(jīng)積累的數(shù)據(jù)量比較龐大,如果還采用諸如Instr與Like的常見文本定位方法,則會(huì)對(duì)所有的數(shù)據(jù)表進(jìn)行掃描,從而導(dǎo)致運(yùn)算與服務(wù)資源的大量消耗,給整個(gè)系統(tǒng)的搜索功能帶來限制。所以,針對(duì)數(shù)據(jù)量龐大的題錄數(shù)據(jù),就需要對(duì)其不同的屬性字段進(jìn)行效率更高的關(guān)鍵字匹配,而這樣處理,也容易造成比較嚴(yán)重的效率與性能障礙。
Oracle中所提供的全文索引技術(shù),可以實(shí)現(xiàn)段落性標(biāo)準(zhǔn)號(hào)的逐詞分解,將對(duì)不同單個(gè)戶主的出現(xiàn)頻率、位置等進(jìn)行準(zhǔn)確標(biāo)記,進(jìn)而根據(jù)單個(gè)詞語自己的編碼順序來實(shí)現(xiàn)索引文件的存儲(chǔ)。這樣,依托標(biāo)準(zhǔn)號(hào)來實(shí)現(xiàn)查詢時(shí),就不需要對(duì)所有的標(biāo)準(zhǔn)題錄進(jìn)行遍歷與檢索,只需要根據(jù)所建立的索引文件來進(jìn)行有序查找,從而實(shí)現(xiàn)對(duì)標(biāo)準(zhǔn)號(hào)關(guān)鍵詞的有序查詢;對(duì)于數(shù)據(jù)量龐大的標(biāo)準(zhǔn)題錄數(shù)據(jù)庫來說,其查詢的復(fù)雜度可以控制在Log2(N)的水平,有效規(guī)避對(duì)整個(gè)題錄數(shù)據(jù)表的全部遍歷操作。
不過,優(yōu)化索引的建立過程需要消耗較多的時(shí)間,使用中不應(yīng)該在完成每條題錄數(shù)據(jù)的修改后就進(jìn)行索引的優(yōu)化,而是應(yīng)該充分利用Oracle中的Job定時(shí)任務(wù),以天為單位對(duì)索引優(yōu)化進(jìn)行定期調(diào)用與執(zhí)行,從而確保數(shù)據(jù)查詢的準(zhǔn)確與高效。結(jié)果表明,通過采用全文索引的構(gòu)建操作,可以提高約10倍以上的查詢速率。同時(shí),還可以滿足題錄查詢實(shí)際應(yīng)用中的其他需求。
3 基于0racIe快速刷新的物化視圖技術(shù)
3.1 業(yè)務(wù)需求
對(duì)于任何生產(chǎn)企業(yè)來說,其所生產(chǎn)的產(chǎn)品,均應(yīng)該符合國家與行業(yè)的相關(guān)技術(shù)標(biāo)準(zhǔn)。所以,就有必要設(shè)計(jì)與開發(fā)標(biāo)準(zhǔn)年檢子系統(tǒng),以便實(shí)現(xiàn)對(duì)年檢企業(yè)的查詢服務(wù),主要包括作廢標(biāo)準(zhǔn)企業(yè)標(biāo)底、作廢標(biāo)準(zhǔn)替代、年檢報(bào)告打印等。同時(shí),還要對(duì)進(jìn)行年檢企業(yè)的數(shù)量、標(biāo)準(zhǔn)量、企業(yè)的標(biāo)準(zhǔn)量以及其他標(biāo)準(zhǔn)數(shù)的準(zhǔn)確與高效統(tǒng)計(jì)。
3.2 物化視圖
對(duì)于標(biāo)準(zhǔn)化服務(wù)平臺(tái)中所存儲(chǔ)的龐大題錄數(shù)據(jù),涉及到的企業(yè)量也達(dá)到了數(shù)萬家,而每家企業(yè)所年檢的標(biāo)準(zhǔn)條數(shù)也不同。而在檢索中,每個(gè)年檢企業(yè)的標(biāo)準(zhǔn)查詢均需要通過與題錄庫的訪問,還確認(rèn)相關(guān)標(biāo)準(zhǔn)的有效性,同時(shí)還需要對(duì)企業(yè)的作廢標(biāo)準(zhǔn)情況進(jìn)行計(jì)算。
在此過程中,考慮到數(shù)據(jù)量較大,僅僅采用普通的視圖構(gòu)建方式,速率比較慢。不過,通過采用物化視圖的方式,可以對(duì)表連接或聚焦等需要消耗較多時(shí)間的操作進(jìn)行預(yù)先計(jì)算與保存,這樣,在查詢過程中,就可以避免此類比較耗時(shí)的操作,加快查詢速率。同時(shí),利用物化視圖的刷新,還可以提供數(shù)據(jù)查詢的正確性與有效性。
4 基于Oracle的Job定時(shí)任務(wù)
4.1 業(yè)務(wù)需求
對(duì)于不同的標(biāo)準(zhǔn),其發(fā)布時(shí)間、實(shí)施時(shí)間以及作廢時(shí)間可能均存在差異。而標(biāo)準(zhǔn)從發(fā)布到實(shí)施,其狀態(tài)也處于不斷的變化中;可見,標(biāo)準(zhǔn)狀態(tài)的不斷更改與變化,則是整個(gè)標(biāo)準(zhǔn)化數(shù)據(jù)庫在實(shí)際運(yùn)行與維護(hù)中的關(guān)鍵,會(huì)對(duì)題錄數(shù)據(jù)庫的完整性與準(zhǔn)確性產(chǎn)生影響。
4.2 0racle中的Job定時(shí)操作
標(biāo)準(zhǔn)化數(shù)據(jù)庫的維護(hù)中,如果利用人工方式來實(shí)現(xiàn)所有題錄數(shù)據(jù)的維護(hù),則不可避免地會(huì)存在遺漏或錯(cuò)誤的情況。所以,考慮采用Oracle中的任務(wù)隊(duì)列管理器(即Job Queue)來完成。通過任務(wù)隊(duì)列管理器,可以由管理員來指定自動(dòng)執(zhí)行的時(shí)間與次數(shù);在此過程中,由于所有的執(zhí)行均在數(shù)據(jù)庫中來完成,則會(huì)提高相關(guān)執(zhí)行的效率。任務(wù)隊(duì)列管理器可以對(duì)作業(yè)執(zhí)行的時(shí)間進(jìn)行定制,還可以提供更加靈活的處理方式;此外,還可以通過具體的配置,將執(zhí)行過程安排在系統(tǒng)訪問量較少的時(shí)段,從而能夠有效提高整個(gè)系統(tǒng)的工作效率與負(fù)荷均衡。
對(duì)于一些耗時(shí)和重復(fù)性的操作,比如:數(shù)據(jù)庫數(shù)據(jù)備份、批量更新、海量數(shù)據(jù)處理等,均可以利用任務(wù)隊(duì)列管理器來減少相關(guān)的工作量。
4.3 自動(dòng)修改標(biāo)準(zhǔn)狀態(tài)實(shí)現(xiàn)
完成了Job任務(wù)的創(chuàng)建后,就可以對(duì)標(biāo)準(zhǔn)狀態(tài)下的存儲(chǔ)過程CHANGE STD STATUS進(jìn)行調(diào)用或修改。具體的實(shí)現(xiàn)過程為:
存儲(chǔ)過程chage_std_status可以描述如下,對(duì)于標(biāo)準(zhǔn)狀態(tài)為A或N的情況下,其處理為:
IF v DICT STANDARD STATUS= 'A'
OR V DICT STANDARD STATUS= tN' THEN
IF v DIC,T STANDARD STATUS= ‘N
AND V DATE IMPLEMENTATION
THEN
BEGIN
UPDATE STD SET
DICT STANDARD STATUS= 'A'
WHERE STD.ID= v_STD_ID;
C,OMMIT;
V DICT STANDARD STATUS:
=‘A:
END;
END IF;
END IF;
IF V DATE OBSOLETE IS NOT NULL
AND v_DATE_OBSOLETE
THEN
BEGIN
UPDATE STD SET
DICT STANDARD STATUS= 'W'
WHERE STD.ID= v_STD_ID,
COMMIT;
END;
END IF;
對(duì)于存儲(chǔ)過程CHANGE STD STATUS,完成和執(zhí)行Job定時(shí)任務(wù)的實(shí)現(xiàn)過程如下:
DECLARE
X NUMBER;
BEGIN
SYS.DBMS JOB.SUBMIT
SYS.DBMS_OUTPUT.PUT_LINE(‘JobNumber is= to_char(x》;
COMMIT;
END;
可以看出,利用Oracle中的Job功能,就可以實(shí)施和完成定時(shí)調(diào)度任務(wù),并能夠基于實(shí)施和作廢日期,來實(shí)現(xiàn)對(duì)標(biāo)準(zhǔn)狀態(tài)的修改與調(diào)整,即NN—A或A—W。
5 結(jié)束語
文中主要針對(duì)Oracle數(shù)據(jù)庫中的全文索引、物化視圖以及Job定時(shí)任務(wù)等查詢優(yōu)化技術(shù),對(duì)標(biāo)準(zhǔn)化服務(wù)平臺(tái)中的查詢過程進(jìn)行優(yōu)化。而后期的應(yīng)用效果則表明,Oracle中所提供的各種查詢優(yōu)化技術(shù),需要根據(jù)具體應(yīng)用系統(tǒng)的需求特點(diǎn)來進(jìn)行分析與選擇,并對(duì)各種優(yōu)化方式進(jìn)行全面綜合,以便能夠達(dá)到預(yù)期的設(shè)計(jì)目標(biāo)。
參考文獻(xiàn)
[1]曾傳軍,基于索引技術(shù)的情報(bào)業(yè)務(wù)系統(tǒng)的應(yīng)用研究[D].廣州:廣東工業(yè)大學(xué),2 012.
[2]蔡焰.OraclelOgHWM原理及性能優(yōu)化[J].微型機(jī)與應(yīng)用,2013,32 (08):1-3.
[3]鄒一丹,異構(gòu)數(shù)據(jù)源集成系統(tǒng)中查詢重寫的研究[D].哈爾濱商業(yè)大學(xué),2017.
[4]王蒙湘,李芳芳,谷峪,于戈.交互式數(shù)據(jù)探索綜述[J].計(jì)算機(jī)科學(xué)與探索,2017,11(02):171-184.