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