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