王宇
摘要:Oracle數(shù)據(jù)庫系統(tǒng)性能的高低、好壞與多因素相關(guān),除了傳統(tǒng)的網(wǎng)絡(luò)性能、操作系統(tǒng)等會對其性能造成影響外,數(shù)據(jù)存儲結(jié)構(gòu)、應用程序等,也會對其性能產(chǎn)生影響。本文首先探討了Oracle數(shù)據(jù)庫的優(yōu)化調(diào)整技術(shù),即分別從數(shù)據(jù)庫運行環(huán)境優(yōu)化、應用優(yōu)化及數(shù)據(jù)庫參數(shù)優(yōu)化等方面,指出此數(shù)據(jù)庫的優(yōu)化方法,望能為此領(lǐng)域研究有所借鑒。
關(guān)鍵詞:Oracle數(shù)據(jù)庫;系統(tǒng)性能;優(yōu)化
Oracle數(shù)據(jù)庫是一種在安全性、可靠性與兼容性方面均高的大型數(shù)據(jù)庫,被廣泛應用在生產(chǎn)制造、通信及金融等領(lǐng)域。為了能夠更好的滿足Oracle數(shù)據(jù)庫的應用需要,對信息時代下所產(chǎn)生的大量數(shù)據(jù)進行管理與利用,為業(yè)務應用提供更好支撐,這對于Oracle數(shù)據(jù)庫的優(yōu)化至關(guān)重要。在現(xiàn)實應用與操作中,常會出現(xiàn)Oracle數(shù)據(jù)庫系統(tǒng)性能變差的情況,現(xiàn)階段,性能惡化多表現(xiàn)為需花費用戶較長的等待時間、系統(tǒng)響應時間較長等。而對其進行性能優(yōu)化,主要使結(jié)合現(xiàn)實情況及需要,調(diào)整那些對其性能造成影響的因素,從中獲得更優(yōu)優(yōu)質(zhì)的運行狀態(tài),使性能最佳。本文就Oracle數(shù)據(jù)庫系統(tǒng)性能調(diào)整與優(yōu)化策略作一剖析。
1.環(huán)境優(yōu)化
1.1內(nèi)存的優(yōu)化
(1)對內(nèi)存進行合理配置。在配置系統(tǒng)內(nèi)存時,需達成如下目標:(1)盡量減少分頁;(2)減少內(nèi)存交換;(3)盡量使系統(tǒng)全局區(qū)(SGA)駐留內(nèi)存。因此,可采取如下措施,對內(nèi)存進行合理配置:(1)用“sar p”命令,或者是“vmstat”命令,對分頁進行有效監(jiān)控;(2)盡量規(guī)避運行那些無用、沒必要的應用程序或系統(tǒng)進程;(3)把部分工作轉(zhuǎn)移至另外一個操作系統(tǒng)當中;(6)在對操作系統(tǒng)的核心進行配置時,盡量減少內(nèi)存;(7)使SGA始終處于單個共享內(nèi)存段當中。(2)優(yōu)化操作系統(tǒng)參數(shù)。針對SGA來講,其較大程度影響著數(shù)據(jù)庫的性能,而在設(shè)置SGA時,又受操作系統(tǒng)部分數(shù)據(jù)的影響與制約。比如Solaris操作系統(tǒng)(SUN公司),/etc/system文件當中的若干參數(shù),會對Oracle當中的內(nèi)存分配造成直接影響,因此,需要根據(jù)實際需要,對各個參數(shù)進行合理配置,使系統(tǒng)保持高質(zhì)量運轉(zhuǎn)狀態(tài)。
1.2對數(shù)據(jù)庫磁盤輸入/出進行優(yōu)化
磁盤輸入/出(I/O)速度直接會影響到系統(tǒng)性能。將磁盤I/O問題解決好,可大幅提升性能。(1)使用磁盤陣列。伴隨文件系統(tǒng)與硬件的改進,在提升Oracle數(shù)據(jù)庫的I/O操作時,RAID尤為關(guān)鍵。在整個RAID架構(gòu)當中,數(shù)據(jù)在多個磁盤中存放,以奇偶校驗及奇偶拆分的方式,實現(xiàn)數(shù)據(jù)緩存、數(shù)據(jù)分配與數(shù)據(jù)沉余,實現(xiàn)數(shù)據(jù)庫相應I/O符合的減少。針對RAID來講,其擁有諸多標準,比如RAID-1+0、RAID-1等。針對磁盤陣列來講,因其可以將I/O負擔、安全等較好的解決掉,因而在多領(lǐng)域中得到廣泛應用。(2)使用分區(qū)。針對分區(qū)方法來講,其那是提升與大型表相關(guān)性能的最直接且有效方法。對索引的較小片段進行訪問,或直接訪問一個表,而并非對整個索引或表進行訪問,分區(qū)能夠提升效率;針對相關(guān)數(shù)據(jù)而言,其在物理層面上時分開的,但如果在具體的邏輯層面上,便為一起的。借助分區(qū)能提升事務處理、維護操作及恢復等方面的性能。(3)用裸設(shè)備。所謂裸設(shè)備,從根本上來講,就是針對沒有經(jīng)過格式化處理的磁盤,進行相應分區(qū),Oracle能對其進行讀與寫,且無UNIX/IO緩沖開銷。另外,針對裸設(shè)備而言,其能夠用于重做日志文件,還能用作寫操作頻繁且順序訪問的數(shù)據(jù),但在程序中無法使用備份。
2.數(shù)據(jù)庫參數(shù)優(yōu)化
(1)設(shè)置SGA_MAX_SIZE。一般情況下,在起初階段便將SGA_MAX_SIZE設(shè)置成物理內(nèi)容的25%,若用戶量比較大,或存在不足,系統(tǒng)均會自動將其設(shè)置成15~20%,若用戶量比較少,或內(nèi)存充足,則準允使用30~50%的物理內(nèi)存。此外,還需要指出的是,SGA_MAX_SIZE的大小對諸多參數(shù)相應粒度大小具有決定作用。如果SGA_MAX_SIZE小于128Mbyte,則其粒度大小是4Mbyte;如果大于128Mbyte,那么粒度大小使16Mbyte。(2)設(shè)置PGA_AGGREGATE_TARGET。其乃是Oracle在全部回話當中分配的會話PGA總內(nèi)存,同時還是Oracle所引入的具體參數(shù),能夠?qū)SIZE類型參數(shù)進行替換,在對PGA_AGGREGATE_TARGET的各項參數(shù)進行設(shè)置時,需要把WORKAREA_SIZE_POLICY設(shè)置成AUTO。而在實際使用中,其好處即為能夠?qū)τ脩魰挼目們?nèi)存使用量進行設(shè)置,以此來減少分頁。而對于PGA_AGGREGATE_TARGET的參數(shù)來講,需設(shè)置成ESTD_PGA_CACHE_HlTPERCENTAGE>95%的值,如此一來,便能從中得到更高的緩存命中率。
3.應用優(yōu)化
(1)索引優(yōu)化。索引較大程度影響著數(shù)據(jù)庫I/O。若借助索引來對數(shù)據(jù)庫進行訪問,能使原先對大型表的全表掃描大幅減少,因而可時I/O開銷減少。而在使用索引時,一般情況下,能提升DELETE語句的性能,而且還能時UPDATE的性能得到提升,但會使INSERT語句的性能降低,所以,索引并不是越多就越好,在實際使用索引時,需始終秉持如下原則:(1)針對那些更新緩慢的靜態(tài)大表,則建立索引;(2)為了能夠更好的查詢語句,僅選擇少量字段開展查詢的表,則建立索引;(3)如果常需連接,但無指定外鍵的列上,需建索引。(2)SQL語句的優(yōu)化。在對數(shù)據(jù)庫進行操作時,SQL為其唯一途徑,決定著數(shù)據(jù)庫系統(tǒng)的性能。針對SQL語句來講,其消耗的數(shù)據(jù)庫資源占70~90%。在優(yōu)化SQL語句時,就是把性能比較低的SQL語句向目的相同且性能更佳的SQL語句轉(zhuǎn)換。
4.結(jié)語
綜上,Oracle系統(tǒng)有著比較龐大的體系,且伸縮性方面也比較強,需給予長期維護。本文基于Oracle數(shù)據(jù)庫系統(tǒng),分別從數(shù)據(jù)庫運行環(huán)境優(yōu)化、應用優(yōu)化及數(shù)據(jù)庫參數(shù)優(yōu)化等方面,指出了針對性能的具體調(diào)整與優(yōu)化策略,希望對此領(lǐng)域研究有些許幫助。
參考文獻:
[1]谷小秋,李德昌.索引調(diào)整優(yōu)化Oracle 9i工作性能的研究[J].計算機工程與應用,2005,41 (26):174-176.
[2]張學義,王觀玉,黃雋.基于Oralce數(shù)據(jù)庫SQL查詢優(yōu)化研究[J].制造業(yè)自動化,2011,33 (2):116-118.
[3]郭敏,郭靖.Oracle 10G數(shù)據(jù)庫性能優(yōu)化的研究[J].武漢理工大學學報,2005,27 (10):103-105.