沈 嘯
(蘇州健雄職業(yè)技術學院,江蘇 蘇州 215411)
?
基于Oracle數(shù)據(jù)庫海量數(shù)據(jù)的查詢優(yōu)化研究
沈 嘯
(蘇州健雄職業(yè)技術學院,江蘇 蘇州 215411)
摘 要:信息時代的到來為行業(yè)領域注入新鮮的活力。以Oracle數(shù)據(jù)庫為例,其可滿足現(xiàn)行人們數(shù)據(jù)提取、處理與存儲等要求,為生產(chǎn)生活的開展提供極大便利。然而在該數(shù)據(jù)庫應用下,因數(shù)據(jù)量過大,也帶來一系列如系統(tǒng)資源被過多占用、響應時間過長等,極大地影響了Oracle數(shù)據(jù)庫優(yōu)勢的發(fā)揮,尤其在數(shù)據(jù)查詢方面更受到嚴重的制約。對此,文章將對Oracle數(shù)據(jù)庫系統(tǒng)相關概述、數(shù)據(jù)查詢的常用技術以及分頁查詢技術在查詢優(yōu)化中的應用進行探析。
關鍵詞:Oracle數(shù)據(jù)庫;查詢優(yōu)化;分頁查詢
作為信息技術發(fā)展的重要產(chǎn)物,Oracle數(shù)據(jù)庫近年來發(fā)展中在性能上不斷提高,整體設計如物理設計、邏輯設計等都取得較多突破性的成就,得到更多行業(yè)領域的青睞。也因如此,使Oracle數(shù)據(jù)庫在頻繁使用下出現(xiàn)海量數(shù)據(jù),為查詢工作帶來極大的難題,這就要求做好查詢優(yōu)化工作,使Oracle數(shù)據(jù)庫綜合性能得以提升。因此,本文對Oracle數(shù)據(jù)庫數(shù)據(jù)查詢優(yōu)化相關研究,具有十分重要的意義。
關于Oracle數(shù)據(jù)庫,其實質(zhì)為圍繞分布式數(shù)據(jù)庫所設計的軟件,可與B/S體系結構、CLIENT/SERVER等硬件平臺相吻合。實際應用中,在具備數(shù)據(jù)庫系統(tǒng)基本功能的基礎上,也將分布式處理功能引入其中。而且在系統(tǒng)運行中,能夠保證在資源使用率上較高,對于多種數(shù)據(jù)庫可進行整合,并采取分層處理數(shù)據(jù)庫資料的措施,為使用者帶來極大便利。加上Oracle數(shù)據(jù)庫在安全性上較為明顯,使其應用更為廣泛。然而需注意的是數(shù)據(jù)庫應用下常面臨數(shù)據(jù)量過大問題,其很可能導致查詢時響應時間過長,這樣便需做好數(shù)據(jù)的查詢技術優(yōu)化工作。以往Oracle數(shù)據(jù)庫應用下,盡管也強調(diào)將相關的數(shù)據(jù)查詢優(yōu)化措施引入,但所取得的效果并不明顯,究其原因在于優(yōu)化過程中未能保證數(shù)據(jù)庫滿足規(guī)范化要求,且整個數(shù)據(jù)庫系統(tǒng)未能及時升級,由此導致Oracle數(shù)據(jù)庫性能受到影響[1]。
針對Oracle數(shù)據(jù)庫數(shù)據(jù)查詢的問題,現(xiàn)行常用的優(yōu)化技術集中表現(xiàn)在SQL語句優(yōu)化、分區(qū)技術以及索引技術等方面。以其中索引技術為例,應用過程中需以表列為依據(jù)進行索引設置,當索引創(chuàng)建后,在完成基修改或刪除等操作的基礎上,索引會指導數(shù)據(jù)完成排序過程,這樣對于該列查詢將更為容易。實際進行索引創(chuàng)建中,對于修改、刪除或增加的表列一般不建立索引,而在查詢操作較為頻繁的表列中創(chuàng)建索引。具體構建索引時也有其他相關注意事項,如索引構建中將面臨維護問題,且在索引創(chuàng)建后,若需對某一條記錄返回,要求對多個文件進行掃描。同時,在錯誤索引存在情況下,很容易使多表連接操作耗費較多時間。這些事項都成為索引技術應用下需注意的問題[2]。
而對于分區(qū)技術的應用,其主要指在大型表中涵蓋海量數(shù)據(jù)的情況下,所采取的數(shù)據(jù)處理技術,強調(diào)做好數(shù)據(jù)物理分離工作,但分離后的數(shù)據(jù)在邏輯結構上仍可作為整體。該技術應用下,無需由技術人員實時分析與確定數(shù)據(jù)存儲位置,僅需對該表看作為一個整體,便能達到數(shù)據(jù)查詢的目標。從分區(qū)的方法看,集中表現(xiàn)在以字段值范圍為依據(jù)進行分區(qū);以字段HASH函數(shù)值為依據(jù)完成分區(qū);在按照字段值范圍分區(qū)的基礎上,結合HASH劃分,完成分區(qū)過程;列表分區(qū)方式。綜合近年來較多行業(yè)領域中分區(qū)技術應用的優(yōu)勢看,如車輛過車記錄表查詢等,可使查詢速度提升許多。具體的優(yōu)勢表現(xiàn)為:①查詢性能改善。用戶可根據(jù)自身需求對關注的分區(qū)進行搜索,整個檢索速度較快;②均衡I/O。在磁盤上可直接完成不同分區(qū)映射過程,這樣在I/O平衡下,有利于分區(qū)的修復;③維護較為容易。假定分區(qū)后存在一個區(qū)故障問題,僅需保證應用的修復數(shù)據(jù)合理,便可對該區(qū)域進行修復;④可用性得到增強。分區(qū)技術應用下,由于有較多不同區(qū)域存在,這樣故障問題出現(xiàn)的可能性也較高,但即使某分區(qū)異常,其他分區(qū)中表的數(shù)據(jù)將不會受到影響。需注意的是分區(qū)技術應用下,一般會涉及維護分區(qū)問題,其對于分區(qū)索引很容易帶來影響,若該影響較為明顯,應注意維護后進行索引的重建[3]。
3.1 數(shù)據(jù)查詢優(yōu)化中的SQL語句優(yōu)化
Oracle數(shù)據(jù)庫應用下,SQL語句可執(zhí)行性問題是編寫工作面臨的主要難題,盡管可選擇多種方式進行編寫,卻難以保證所選擇的方式最為適宜。因此數(shù)據(jù)查詢優(yōu)化中,要求做好SQL語句優(yōu)化工作,確保SQL語句執(zhí)行效率低的問題得以解決。實際優(yōu)化語句過程中,通常需從查詢等價交換方面著手,以查詢語義為依據(jù),保證語句以高執(zhí)行效率形式呈現(xiàn)出來。且注意優(yōu)化時應按照一定的原則開展,包括:①索引的合理運用;②聯(lián)合查詢次序的合理選擇;③NOT IN或IN等語句的合理使用;④對于視圖較為復雜情況,可采取的形式為聯(lián)合查詢;⑤禁止將PL/SQL功能調(diào)用應用于SQL中;⑥對GROUP BY進行優(yōu)化,過濾掉其中不必要的記錄[4]。
3.2 分頁查詢技術的應用
現(xiàn)行Oracle數(shù)據(jù)庫應用下,解決其海量數(shù)據(jù)查詢問題的關鍵性措施在于分頁查詢,其對于查詢速度的提高可起到明顯作用。一般查詢過程中需從SQL語句對部分數(shù)據(jù)進行過濾,選取其中n條數(shù)據(jù)進行查看,完成這些數(shù)據(jù)查詢的基礎上對“下一頁”按鈕進行點擊,使其他數(shù)據(jù)得以查詢,有效解決海量數(shù)據(jù)一次性查詢的難題[5]。
分頁查詢技術應用中,其在融入SQL語句優(yōu)化技術的基礎上,也涵蓋其他如動態(tài)SQL、批綁定與游標變量等技術。如在動態(tài)SQL方面,強調(diào)為使不同條件、不同數(shù)據(jù)查詢目標得以實現(xiàn),將動態(tài)SQL技術引入,利用字符串對用戶查詢請求進行描述,當數(shù)據(jù)庫服務器收到字符串后會直接對字符串語法進行分析,而非對語句執(zhí)行權限、語句中的數(shù)據(jù)庫對象判斷,整個權限檢查與對象判斷都在語句執(zhí)行就階段中開展。這種方式運用下可使查詢顯示中,不會被特定條件、特定對象等所干擾。再如游標變量,其是保證將查詢數(shù)據(jù)向客戶端傳遞的關鍵所在,要求利用一個緩存區(qū)對當前頁數(shù)據(jù)存儲。這樣當前頁數(shù)據(jù)在使用中將更為容易,不會因數(shù)據(jù)量或數(shù)據(jù)結構等所限制。以Oracle 10g為例,可在游標引用類型明確的基礎上,由用戶對游標變量進行定義,這樣能夠使游標變量的使用更為容易,便于數(shù)據(jù)查詢。另外,在分頁查詢技術應用下,也要求將批綁定技術引入其中,該技術強調(diào)對PL/SQL引擎、SQL引擎交換次數(shù)進行控制,通過BULK COLLECT語句運用,將多條記錄信息一次返回,且在集合類型變量中進行存儲。在以往學者研究中,可發(fā)現(xiàn)數(shù)據(jù)量增加情況下,就將批綁定技術引入,對查詢效率的提高可起到明顯效果。另外,為使分頁查詢技術應用目標得以實現(xiàn),要求在接口設計上較為合理,可在PL/SQL程序運用下,完成編寫存儲工作[6]。
需注意的是,分頁查詢技術本身包含不同的類型,如以往ADO記錄集應用下,強調(diào)在客戶端內(nèi)存中進行數(shù)據(jù)的存儲,使ADO分頁功能運用下達到分頁目標,但這種方式僅對少量數(shù)據(jù)適用。因此,本文在研究中考慮對數(shù)據(jù)庫服務器充分利用,直接將數(shù)據(jù)存儲其中,在此基礎上對數(shù)據(jù)細化為不同部分,向客戶端傳遞,這樣對于海量數(shù)據(jù)查詢也可適用[7]。
Oracle數(shù)據(jù)庫的應用為企業(yè)與個人生產(chǎn)生活活動提供重要技術保障。但實際應用該數(shù)據(jù)系統(tǒng)中,也面臨海量數(shù)據(jù)查詢問題,要求在查詢優(yōu)化中正確認識Oracle數(shù)據(jù)庫系統(tǒng)的基本內(nèi)涵,在此基礎上將相關的查詢優(yōu)化技術引入其中,包括分區(qū)技術以及索引技術等。同時,也可考慮應用分頁查詢技術,其集較多技術如批綁定、動態(tài)SQL語句以及游標變量等于一體,為海量數(shù)據(jù)查詢提供技術支撐。
[參考文獻]
[1]張輝,趙郁亮,徐江,等.基于Oracle數(shù)據(jù)庫海量數(shù)據(jù)的查詢優(yōu)化研究[J].計算機技術與發(fā)展,2012(22):165-167.
[2]張學義,王觀玉,黃雋.基于Oralce數(shù)據(jù)庫SQL查詢優(yōu)化研究[J].制造業(yè)自動化,2011(12):116-118.
[3]孫風棟,閆海珍. Oracle 10g數(shù)據(jù)庫海量數(shù)據(jù)分頁查詢優(yōu)化[J].計算機應用與軟件,2011(28):137-139.
[4]曾平.基于oracle數(shù)據(jù)庫海量數(shù)據(jù)的查詢優(yōu)化研究[J].信息系統(tǒng)工程,2014(8):20-21.
[5]高聞迪.突發(fā)性海量數(shù)據(jù)處理技術在物聯(lián)網(wǎng)監(jiān)控系統(tǒng)中的研究與應用[D].北京:北京郵電大學,2013.
[6]馬英俊.基于Oracle數(shù)據(jù)庫與ARCSDE結合的空間數(shù)據(jù)庫性能優(yōu)化[D].北京:北京郵電大學,2011.
[7]陳含.基于Hadoop的海量數(shù)據(jù)存儲和計算平臺的設計與實現(xiàn)[D].武漢:武漢理工大學,2014.
Query Optimization of Massive Data Based on Oracle Database
Shen Xiao
(Jianxiong Institute of Vocational Technology Suzhou,Suzhou 215411,China)
Abstract:The advent of the information age industries injected fresh vitality. The Oracle database as an example,which can meet the current people data extraction,processing,storage,and other requirements for production and life to provide great convenience. However in the database application,because of large amount of data,it also brings a series such as resource system was too much occupied,response time is too long,greatly affected the giving full play to the advantage of Oracle databases,especially in data query more subject to serious constraints. This article will on the relevant overview of Oracle database system,data query technique is commonly used and paging query technology in query optimization The application of the analysis.
Key words:oracle database;query optimization;paging query
基金項目:項目名稱:科技項目經(jīng)費報銷與管理系統(tǒng)設計;項目編號:2013QNJJ29。
作者簡介:沈嘯(1985-),男,江蘇鹽城,本科,助教。