李璐璐
摘 要 數(shù)據(jù)庫優(yōu)化是使數(shù)據(jù)庫發(fā)揮更優(yōu)性能的重要手段與方法。而Oracle數(shù)據(jù)庫的優(yōu)化對(duì)于數(shù)據(jù)庫產(chǎn)品應(yīng)用來說意義重大,其不僅可以提高效率,保障安全,還可以為企業(yè)節(jié)約成本,規(guī)避風(fēng)險(xiǎn),對(duì)于企業(yè)發(fā)展來著有著十分重要的作用。文章研究了Oracle數(shù)據(jù)庫優(yōu)化的具體方法。對(duì)于Oracle數(shù)據(jù)庫優(yōu)化,建議多在設(shè)計(jì)階段下功夫,經(jīng)過優(yōu)化設(shè)計(jì)的Oracle數(shù)據(jù)庫在應(yīng)用中會(huì)起到事半功倍的效果,比起應(yīng)用中的優(yōu)化更直接,當(dāng)然在數(shù)據(jù)庫的應(yīng)用階段,也不能放棄對(duì)數(shù)據(jù)庫的優(yōu)化,要隨時(shí)分析判斷數(shù)據(jù)的變化,及時(shí)做出優(yōu)化方案并實(shí)施。
關(guān)鍵詞 Oracle;數(shù)據(jù)庫;數(shù)據(jù)庫優(yōu)化
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-7597(2014)24-0031-02
1 實(shí)施Oracle數(shù)據(jù)庫優(yōu)化的重要性分析
當(dāng)前Oracle作為大型數(shù)據(jù)庫其市場份額穩(wěn)步前進(jìn),Oracle為企業(yè)的大型數(shù)據(jù)庫產(chǎn)品進(jìn)行了重要的支撐。而數(shù)據(jù)庫優(yōu)化是使數(shù)據(jù)庫發(fā)揮更優(yōu)性能的重要手段與方法。而Oracle數(shù)據(jù)庫的優(yōu)化對(duì)于數(shù)據(jù)庫產(chǎn)品產(chǎn)用來說意義重大,其不僅可以提高效率,保障安全,還可以為企業(yè)節(jié)約成本,規(guī)避風(fēng)險(xiǎn),對(duì)于企業(yè)發(fā)展來著有著十分重要的作用。
2 Oracle數(shù)據(jù)庫優(yōu)化的總原則
1)查看系統(tǒng)的使用情況。
2)查看SGA分配情況,結(jié)合系統(tǒng)具體情況進(jìn)行分析。
3)表的設(shè)計(jì)分析。
4)SQL語句分析。
3 實(shí)Oracle數(shù)據(jù)庫優(yōu)化的實(shí)施要?jiǎng)t
1)查看系統(tǒng)的使用情況,CPU占用,內(nèi)存,I/O讀取等。Oracle10G提供的Oracle Enterprise Manager圖形化工具中的ADDM 和SQL Tuning Advisor等可以方便的查看系統(tǒng)狀況
2)OPS上負(fù)載均衡,不同查詢用不同Instance。
3)提供腳本查看SGA使用情況。
4)分析SQL執(zhí)行情況(trace及其他工具)。
4 Oracle數(shù)據(jù)庫優(yōu)化的具體方法
Oracle數(shù)據(jù)庫優(yōu)化需要從兩個(gè)重要階段入手,第一個(gè)階段是數(shù)據(jù)庫設(shè)計(jì)階段,這是在數(shù)據(jù)庫正式應(yīng)用之前,將數(shù)據(jù)庫進(jìn)行合理的設(shè)計(jì)。第二個(gè)階段是數(shù)據(jù)庫運(yùn)行階段,及時(shí)關(guān)注數(shù)據(jù)變化,做出合理優(yōu)化方案。
4.1 Oracle數(shù)據(jù)庫設(shè)計(jì)階段的優(yōu)化方法
Oracle數(shù)據(jù)庫設(shè)計(jì)階段的優(yōu)化是在邏輯設(shè)計(jì)階段與物理設(shè)計(jì)兩階段進(jìn)行數(shù)據(jù)的優(yōu)化。在設(shè)計(jì)階段優(yōu)化針對(duì)較多修改較少查詢的數(shù)據(jù)和較多查詢較少修改的數(shù)據(jù)要分別對(duì)待。
1)設(shè)計(jì)階段結(jié)構(gòu)優(yōu)化。
①根據(jù)應(yīng)用程序進(jìn)行數(shù)據(jù)庫設(shè)計(jì)。即應(yīng)用程序采用的是傳統(tǒng)的C/S兩層體系結(jié)構(gòu),還是B/W/D三層體系結(jié)構(gòu)。不同的應(yīng)用程序體系結(jié)構(gòu)要求的數(shù)據(jù)庫資源是不同的。
②遵循3大范式規(guī)范化數(shù)據(jù)結(jié)構(gòu),減少不必要的冗余。
③反規(guī)范設(shè)計(jì),增加必要冗余,提高查詢速度。
④針對(duì)變化較少的數(shù)據(jù),合理創(chuàng)建臨時(shí)表和視圖,需注意對(duì)臨時(shí)表和視圖的及時(shí)同步更新。
⑤在服務(wù)器端使用過程和函數(shù),減少網(wǎng)絡(luò)數(shù)據(jù)傳輸。
2)設(shè)計(jì)階段I/O優(yōu)化。
①使用分區(qū),對(duì)查詢條件字段(主外鍵)建立索引,依據(jù)Rowid物理地址查詢,減少I/O的消耗。應(yīng)避免可能參與計(jì)算的字段。
②建立合適的索引。
索引的建立對(duì)于提高查詢速度有著十分重要的作用,但是如果索引的建立過多或者不合理的話,會(huì)在數(shù)據(jù)的添加、修改、刪除操作時(shí)占用大量資源,降低系統(tǒng)效率,因此,在設(shè)計(jì)索引時(shí),一定要充分考慮到索引的價(jià)值,以及字段的特點(diǎn),如果涉及過多添加、修改、刪除操作,則需要慎重處理。
索引分為聚簇索引與非聚簇索引。缺省情況下建立的索引是非群集索引,但有時(shí)它并不是最佳的;合理的索引設(shè)計(jì)要建立在對(duì)各種查詢的分析和預(yù)測上。一般來說:有大量重復(fù)值、且經(jīng)常有范圍查詢(between,>,<,>=,<=)和order by、group by發(fā)生的列,可考慮建立群集索引;經(jīng)常同時(shí)存取多列,且每列都含有重復(fù)值可考慮建立組合索引;組合索引要盡量使關(guān)鍵查詢形成索引覆蓋,其前導(dǎo)列一定是使用最頻繁的列。
但是,定期的重構(gòu)索引是有必要的。不過要避免在索引列上使用計(jì)算,判斷或函數(shù)處理。在設(shè)計(jì)索引時(shí),建議盡量使用聚簇索引。同時(shí),對(duì)于索引列的選擇也需要考慮以上原則。
③使用存檔功能。
④數(shù)據(jù)緩沖,快照,視圖,遠(yuǎn)程調(diào)用等,減少I/O和網(wǎng)絡(luò)消耗。
⑤I/O調(diào)整:DBA需要隨時(shí)關(guān)注I/O負(fù)載情況,使I/O負(fù)載均衡均衡。
⑥確定數(shù)據(jù)塊大小和存儲(chǔ)參數(shù)。實(shí)際維護(hù)過程當(dāng)中,DBA通常需要分析現(xiàn)有數(shù)據(jù),以及未來一段時(shí)間數(shù)據(jù)發(fā)展的趨勢來確定存儲(chǔ)參數(shù)。
4.2 Oracle數(shù)據(jù)庫運(yùn)行階段的優(yōu)化方法
1)Oracle數(shù)據(jù)庫運(yùn)行階段系統(tǒng)優(yōu)化。
Oracle數(shù)據(jù)庫運(yùn)行階段作為DBA一定要充分注意外部資源的使用權(quán)用情況,如果單單把精力放在Oracle數(shù)據(jù)庫內(nèi)部,而忽略了外部資源的情況,則會(huì)發(fā)生數(shù)據(jù)庫與外部資源交換時(shí)出現(xiàn)瓶頸的情況,此時(shí),如果單單優(yōu)化數(shù)據(jù)庫內(nèi)部也是不會(huì)有什么作用。基于此,在Oracle數(shù)據(jù)庫運(yùn)行階段系統(tǒng)優(yōu)化的具體方法有以下四種:
①多處理器系統(tǒng)調(diào)整優(yōu)化,啟用并行查詢。
②減少內(nèi)存交換,減少分頁,使SGA(System Globle Area)可留駐內(nèi)存。
③優(yōu)化系統(tǒng)I/O環(huán)境。
④優(yōu)化網(wǎng)絡(luò)環(huán)境。
2)Oracle數(shù)據(jù)庫運(yùn)行階段數(shù)據(jù)庫連接與網(wǎng)絡(luò)優(yōu)化。
①使用直接OLE DB連接。
②使用Connection Pool(數(shù)據(jù)連接池)機(jī)制。
③優(yōu)化程序設(shè)計(jì),減少網(wǎng)絡(luò)傳輸量。
5 小結(jié)
對(duì)于Oracle數(shù)據(jù)庫優(yōu)化,建議多在設(shè)計(jì)階段下功夫,經(jīng)過優(yōu)化設(shè)計(jì)的Oracle數(shù)據(jù)庫在應(yīng)用中會(huì)起到事半功倍的效果,比起應(yīng)用中的優(yōu)化更直接,當(dāng)然在數(shù)據(jù)庫的應(yīng)用階段,也不能放棄對(duì)數(shù)據(jù)庫的優(yōu)化,要隨時(shí)分析判斷數(shù)據(jù)的變化,及時(shí)做出優(yōu)化方案并實(shí)施。
參考文獻(xiàn)
[1]覃艷.Oracle數(shù)據(jù)庫高性能優(yōu)化設(shè)計(jì)方法初探[J].電腦知識(shí)與技術(shù),2012(23).
[2]勵(lì)文杰.大型數(shù)據(jù)庫ORACLE數(shù)據(jù)庫的優(yōu)化設(shè)計(jì)方案[J].科技風(fēng),2011(19).
[3]張舒.超大型Oracle數(shù)據(jù)庫的基礎(chǔ)設(shè)計(jì)和優(yōu)化設(shè)計(jì)[J].價(jià)值工程,2011(10).
[4]支春明.影響數(shù)據(jù)庫性能的因素分析及改進(jìn)策略[J].中國高新技術(shù)企業(yè),2008(23).
[5]李學(xué)忠.ORACLE數(shù)據(jù)庫的優(yōu)化使用[J].電子工藝技術(shù),2013(05).endprint