摘要:Oracle數(shù)據(jù)庫性能優(yōu)化對于保證系統(tǒng)安全,信息安全,業(yè)務(wù)正常運(yùn)作具有重要影響。全文首先簡要闡述了影響Oracle性能的因素,然后提出確定Oracle性能調(diào)整目標(biāo)的必要性,最后介紹了Oracle數(shù)據(jù)庫系統(tǒng)性能優(yōu)化技術(shù)。
關(guān)鍵字:Oracle 數(shù)據(jù)庫 優(yōu)化
中圖分類號(hào):TP3文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1672-3791(2011)02(a)-0000-00
進(jìn)入信息社會(huì)來,越來越多的信息都保存成電子形式,數(shù)據(jù)庫作為信息的承載者,發(fā)揮著重要的作用,但不可避免的是數(shù)據(jù)庫系統(tǒng)的性能問題突顯,因此如何對數(shù)據(jù)庫系統(tǒng)進(jìn)行性能優(yōu)化是至關(guān)重要的。Oracle是使用最廣泛的大型數(shù)據(jù)庫之一,使用Oracle的應(yīng)用系統(tǒng)規(guī)模也比較大,需要處理的連接數(shù)和事務(wù)都是較多的,對于這些系統(tǒng)來講效率是最重要的指標(biāo)之一,因此經(jīng)常性地調(diào)整可以優(yōu)化應(yīng)用系統(tǒng)的性能,防止系統(tǒng)出現(xiàn)瓶頸。
一、影響Oracle性能的因素
Oracle系統(tǒng)性能受到數(shù)據(jù)庫運(yùn)行的諸多方面的影響與制約,包括數(shù)據(jù)庫及其配置、操作系統(tǒng)、設(shè)計(jì)、應(yīng)用程序。
1、數(shù)據(jù)庫及其配置
數(shù)據(jù)庫是整個(gè)系統(tǒng)的核心,它的性能直接影響到整個(gè)系統(tǒng)的性能。如果對數(shù)據(jù)庫系統(tǒng)的選用和數(shù)據(jù)庫系統(tǒng)的配置不恰當(dāng)?shù)脑?,對系統(tǒng)的設(shè)計(jì)到最終的使用都是一種災(zāi)難,所以務(wù)必做好詳細(xì)的規(guī)劃。
2、操作系統(tǒng)
操作系統(tǒng)不是數(shù)據(jù)庫,但是數(shù)據(jù)庫的基礎(chǔ),作為數(shù)據(jù)庫運(yùn)行的平臺(tái),在性能或多或少會(huì)對整個(gè)系統(tǒng)造成影響,尤其是在安全性方面。
3、設(shè)計(jì)
應(yīng)用程序的設(shè)計(jì)是整個(gè)系統(tǒng)的靈魂,一個(gè)好的設(shè)計(jì)對系統(tǒng)性能會(huì)有很大幫助,而一個(gè)欠佳的設(shè)計(jì)最佳的修改時(shí)期就是在設(shè)計(jì)時(shí)期,越晚修改付出的代價(jià)也就越大。
4、應(yīng)用程序
應(yīng)用程序中SQL語句的編寫、數(shù)據(jù)庫連接方式的選擇、數(shù)據(jù)庫端程序設(shè)計(jì)以及數(shù)據(jù)庫對象的使用情況等,都影響系統(tǒng)的執(zhí)行效率。
以上幾方面影響性能的比例據(jù)統(tǒng)計(jì)分別依次占:17.5%、2.5%、20%、60%。
二、Oracle性能調(diào)整的目標(biāo)
即使是在系統(tǒng)維護(hù)階段,也需要建立數(shù)據(jù)庫性能的目標(biāo),通過對比才能知道何時(shí)需要做出調(diào)整,調(diào)整的方法從當(dāng)時(shí)設(shè)計(jì)系統(tǒng)時(shí)是如何考慮的出發(fā),進(jìn)行操作系統(tǒng)的硬件或軟件的調(diào)整,確定問題原因,采取有效措施。
當(dāng)進(jìn)行系統(tǒng)設(shè)計(jì)時(shí),制定專門的目標(biāo)。當(dāng)檢測到使用過程中系統(tǒng)不能滿足此目標(biāo)了,查找問題原因,采取糾正措施。在開發(fā)期間,應(yīng)在實(shí)際環(huán)境中測試應(yīng)用,確定在采取應(yīng)用之前是否滿足設(shè)計(jì)的性能目標(biāo)。當(dāng)正在維護(hù)系統(tǒng)時(shí),可以用Oracle工具(例如AWR、ADDM)來監(jiān)視數(shù)據(jù)庫運(yùn)行的狀態(tài)。無論如何,調(diào)整通常是一系列開銷。一旦找到,可能會(huì)要犧牲一些其它方面的指標(biāo)來達(dá)到所要的結(jié)果。例如,如果 I/O競爭太大,可能需要更多內(nèi)存或磁盤。如果不可能添加設(shè)備的話,可能就需要限制系統(tǒng)的并發(fā)或連接數(shù),以得到所需要的性能。當(dāng)面對如何進(jìn)行各方面的取舍時(shí),你必需要明白:哪些方面是最重要,那就可以用其它方面來換取這一方面的性能。隨著應(yīng)用的規(guī)模越來越龐大,全面的調(diào)整應(yīng)用逐漸變成代價(jià)高昂的行為,在這情況下,要取得最大的效率/投入之比,較好的辦法是調(diào)整應(yīng)用的關(guān)鍵部分,使其達(dá)到比較高的性能,這樣從總體上來說,整個(gè)系統(tǒng)的性能也是比較高的。這也就是有名的20/80原則,調(diào)整應(yīng)用的20%(關(guān)鍵部分),能解決80%的問題。
三、數(shù)據(jù)庫性能的優(yōu)化
1、明確哪些是要和計(jì)算機(jī)交互的資源
在計(jì)算機(jī)中磁盤I/O,內(nèi)存,CPU、網(wǎng)絡(luò)和Process是與數(shù)據(jù)庫打交道最多的資源了,如何合理分配利用這些資源,并且需要充分考慮到幾種資源不同的延時(shí),就對數(shù)據(jù)庫的性能有很大的影響了。
磁盤I/O是這幾種資源中最耗時(shí)間的,因?yàn)榇疟P是機(jī)械的設(shè)備,延時(shí)比較大,而硬盤的轉(zhuǎn)速在一定時(shí)期內(nèi)想再提高是比較難的,所以只能是從并行性考慮此問題,如何提高I/O的并行涉及Oracle數(shù)據(jù)庫系統(tǒng)存取的原理,需要理解清楚在進(jìn)行數(shù)據(jù)庫操作時(shí)什么條件下會(huì)引起磁盤的讀寫,有了這些知識(shí)就可以在這個(gè)基礎(chǔ)上進(jìn)行優(yōu)化了。
如何合理使用計(jì)算機(jī)內(nèi)存也會(huì)對數(shù)據(jù)庫的性能造成較大的影響,Oracle數(shù)據(jù)庫中最為主要的內(nèi)存區(qū)域是SGA(System Global Area),所有的數(shù)據(jù)庫線程、共享池以及緩存區(qū)都使用這一塊區(qū)域,所以如果分配太少內(nèi)存給這塊區(qū)域使用,就會(huì)大大降低數(shù)據(jù)庫的整體性能,但如果分配得太多內(nèi)存,就會(huì)限制了操作系統(tǒng)性能,因此在分配SGA的大小一般占主機(jī)內(nèi)存的一半。
在CPU、網(wǎng)絡(luò)和Process方面對數(shù)據(jù)庫的影響較以上兩方面小,在服務(wù)器中CPU的數(shù)量越來越多,線程數(shù)也越來越大,在CPU處理能力上的瓶頸的情況也較少出現(xiàn),而網(wǎng)絡(luò)的瓶頸一般出現(xiàn)在C/S架構(gòu)上,如果在設(shè)計(jì)之初沒有定好網(wǎng)絡(luò)流量的目標(biāo),數(shù)據(jù)庫操作的語句沒有規(guī)劃好寫在客戶端還是服務(wù)器上,當(dāng)數(shù)據(jù)庫訪問量變大后,對網(wǎng)絡(luò)的流量壓力將會(huì)突顯,因此一般大的SQL語句或操作建議放在服務(wù)器端以存儲(chǔ)過程形式來運(yùn)行。另外,因?yàn)镺racle連接模式有專用模式和共享模式之分,所以采取共享模式來連接數(shù)據(jù)庫可以達(dá)到節(jié)省一部分服務(wù)器資源的目標(biāo),但是Oracle的共享模式不是非常完善,而且在很多操作時(shí)需要用到專用模式連接,因此往往很少會(huì)使用共享模式來連接數(shù)據(jù)庫,而使用專用模式連接+連接共享池(中間層來提供)的模式設(shè)計(jì)系統(tǒng)。
2、針對磁盤I/O調(diào)整原則
首先要建立貫穿整個(gè)應(yīng)用的設(shè)計(jì)思想:最小化I/O的訪問。主要的方法有:
均衡各類文件(控制文件、數(shù)據(jù)文件、日志文件、歸檔文件和臨時(shí)文件)的分布
(1)控制文件:單獨(dú)存放,鏡像不要過多,2份足以;
(2)日志文件單獨(dú)存放,不要放在RAID5上,MEMBER不要過多,2份足以;
(3)UNDO文件單獨(dú)存放;
(4)數(shù)據(jù)文件盡可能的要分散,尤其是分區(qū)表和分區(qū)索引所存儲(chǔ)的數(shù)據(jù)文件;
(5)臨時(shí)文件單獨(dú)存放,不同的用戶使用不同的臨時(shí)表空間,最好能使用臨時(shí)表空間組
(6)索引和數(shù)據(jù)文件分離,對I/O影響不大,便于管理(根據(jù)索引的原理ROWID)
(7)歸檔文件和所有其他文件分離,更務(wù)必和日志文件絕對分離
四、結(jié)語
Oracle數(shù)據(jù)庫系統(tǒng)性能優(yōu)化與調(diào)整是一個(gè)復(fù)雜、繁瑣的系統(tǒng)工程,貫穿于數(shù)據(jù)庫系統(tǒng)開發(fā)的整個(gè)過程。本文就磁盤I/O的優(yōu)化和調(diào)整進(jìn)行研究,但數(shù)據(jù)庫系統(tǒng)的優(yōu)化和調(diào)整還包括內(nèi)存結(jié)構(gòu)調(diào)整、磁盤碎片調(diào)整以及C P U性能調(diào)整等,應(yīng)該充分利用各種性能優(yōu)化與調(diào)整策略進(jìn)行反復(fù)的調(diào)整,以獲得系統(tǒng)的最優(yōu)性能。
參考文獻(xiàn)
[1]甄福東.Oracle1Og數(shù)據(jù)庫系統(tǒng)性能優(yōu)化與調(diào)整[J].電腦知識(shí)