喬淑鳳 遼寧錦州渤海大學(xué)信息科學(xué)與技術(shù)學(xué)院
分析oracle數(shù)據(jù)庫性能優(yōu)化的研究
喬淑鳳 遼寧錦州渤海大學(xué)信息科學(xué)與技術(shù)學(xué)院
Oracle被廣泛的應(yīng)用到眾多領(lǐng)域中,隨著數(shù)據(jù)庫用戶量指數(shù)倍數(shù)和用戶訪問量劇增,數(shù)據(jù)庫業(yè)務(wù)處理性能呈直線下降的趨勢。本文研究關(guān)于如何優(yōu)化數(shù)據(jù)庫性能分析問題以及如何確定系統(tǒng)的性能優(yōu)化方案,通過分析影響因素提升數(shù)據(jù)優(yōu)化方案,確定本文使用數(shù)據(jù)優(yōu)化方案的目標(biāo),期望通過本文優(yōu)化技術(shù)使得其性能達(dá)到最優(yōu)化,研究表明:性能優(yōu)化和系統(tǒng)運(yùn)行效率都會達(dá)到最優(yōu)狀態(tài)。
Oracle 數(shù)據(jù)庫 表分區(qū)技術(shù) 性能優(yōu)化 優(yōu)化方案
Oracle的用戶應(yīng)用越來越多,怎樣實現(xiàn)對Oracle性能優(yōu)化、提升運(yùn)行效率、盡量減少數(shù)據(jù)存儲空間和系統(tǒng)吞吐量的改進(jìn),當(dāng)實現(xiàn)軟件開發(fā)時,重點需要考慮是系統(tǒng)優(yōu)化部分。當(dāng)前,Oracle是被廣泛應(yīng)用到各種領(lǐng)域中的數(shù)據(jù)庫,例如:行政機(jī)關(guān)、警務(wù)系統(tǒng)、企業(yè)業(yè)務(wù)管理、銀行業(yè)務(wù)、國際金融業(yè)等多個管理部門,并將Oracle系統(tǒng)逐漸應(yīng)用到企業(yè)的管理平臺,目前,隨著Oracle數(shù)據(jù)庫被廣泛應(yīng)用每個領(lǐng)域,用戶使用量逐年增多,對于選擇大型數(shù)據(jù)庫作為應(yīng)用軟件設(shè)計基礎(chǔ)架構(gòu),它是軟件運(yùn)行的骨架,但是,在項目開發(fā)中,越多用戶量使用系統(tǒng),其用戶訪問量指數(shù)上升,系統(tǒng)中需要同時處理用戶請求不斷增多,數(shù)據(jù)庫數(shù)據(jù)處理性能直線下降,根據(jù)本文需要改進(jìn)和優(yōu)化系統(tǒng)性能,在滿足系統(tǒng)需求分析的前提下,我們通過對其整體性能的優(yōu)化操作,使系統(tǒng)的運(yùn)行與數(shù)據(jù)處理狀態(tài)達(dá)到最優(yōu)地步。
2.1 如何提高數(shù)據(jù)命中率
Oracle的用戶進(jìn)程把全部數(shù)據(jù)存儲在高速緩沖區(qū),因為,高速緩沖區(qū)的讀寫速度快、數(shù)據(jù)命中率高。用戶獲取數(shù)據(jù)如果不在高速緩沖區(qū)獲取,就到低速磁盤中獲取,為了提高數(shù)據(jù)命中率并縮短了系統(tǒng)的響應(yīng)時間,有效的提高在高速緩沖區(qū)命中率,這是衡量數(shù)據(jù)庫性能的另一種重要方法。
2.2 如何縮短系統(tǒng)的響應(yīng)時間
系統(tǒng)的響應(yīng)時間是指用戶發(fā)出請求到系統(tǒng)返回結(jié)果的時間戳,為了提升數(shù)據(jù)庫系統(tǒng)的整體性能,縮短系統(tǒng)的響應(yīng)時間來實現(xiàn)縮短用戶體驗的目的,既可實現(xiàn)縮短用戶請求等待時間,與此同時優(yōu)化系統(tǒng)性能和提高CPU資源使用率。
2.3 如何優(yōu)化系統(tǒng)I/O性能
Oracle將數(shù)據(jù)存儲到系統(tǒng)的磁盤數(shù)據(jù)塊中,如果數(shù)據(jù)庫開始讀寫操作之后,必須與磁盤I/O讀寫操作相關(guān),程序員合理規(guī)劃磁盤I/ O操作,基于高速緩存技術(shù)提高磁盤I/O吞吐量,用戶請求與響應(yīng)時間變短,有效利用數(shù)據(jù)庫物理內(nèi)存空間,有效的避免頻繁地使用磁盤I/O讀寫功能。
2.4 如何實現(xiàn)合理使用內(nèi)存
數(shù)據(jù)庫性能優(yōu)化與內(nèi)存優(yōu)化有關(guān),大型數(shù)據(jù)庫系統(tǒng)對并發(fā)訪問量要求較高,如果Oracle內(nèi)存空間使用不合理便會影響系統(tǒng)數(shù)據(jù)處理效率,延遲用戶等待時間,如果內(nèi)存空間足夠大,得到最大數(shù)據(jù)處理效率和內(nèi)存空間利用率,內(nèi)存空間的使用評價參數(shù)作為系統(tǒng)性能判斷,通過合理使用數(shù)據(jù)庫的內(nèi)存空間,數(shù)據(jù)庫的使用性能才有所提高。
2.5 如何減小磁盤排序
當(dāng)用戶發(fā)出事務(wù)請求時,此請求事務(wù)中有數(shù)據(jù)排序函數(shù)或者嵌套函數(shù)時,有可能執(zhí)行事務(wù)排序在數(shù)據(jù)庫內(nèi)存中進(jìn)行,或許已經(jīng)在低速磁盤上數(shù)據(jù)排序完畢。但是,由于讀寫操作在低速磁盤上實現(xiàn)往往降低系統(tǒng)的運(yùn)行效率,再加上低速磁盤物理結(jié)構(gòu)影響,其實現(xiàn)讀寫操作的效率比內(nèi)存要慢的多,因此,數(shù)據(jù)庫的性能優(yōu)化要減少磁盤排序操作。
目前,存在多種因素影響數(shù)據(jù)性能,如下幾點:
①操作系統(tǒng)的性能。系統(tǒng)性能在某種程度上依賴于運(yùn)行的服務(wù)器,操作系統(tǒng)性能取決于服務(wù)器的性能。
②內(nèi)存參數(shù)設(shè)置。CPU是服務(wù)器運(yùn)行的硬件組成部分,CPU資源被數(shù)據(jù)庫的進(jìn)程占用過高,會導(dǎo)致其他事務(wù)暫停運(yùn)行,致使系統(tǒng)的響應(yīng)等待時間延遲,反而當(dāng)服務(wù)器空閑時,CPU資源占用率超過80%以上的比例,因此,表明服務(wù)器的內(nèi)存參數(shù)有問題。
③數(shù)據(jù)讀寫的I/O操作沖突。如果數(shù)據(jù)讀寫操作都在高速緩存上讀取,由于低速磁盤操作僅允許一個進(jìn)程,當(dāng)多個進(jìn)程同時訪問磁盤數(shù)據(jù)時,操作系統(tǒng)的互斥操作防止數(shù)據(jù)讀寫沖突。
④Oracle配置。如果正確配置Oracle參數(shù)會優(yōu)化數(shù)據(jù)庫整體性能。
⑤應(yīng)用程序管理,應(yīng)用程序在某種程度上影響著服務(wù)器的整體性能,尤其是SQL語句執(zhí)行。
⑥網(wǎng)絡(luò)傳輸速度因素。網(wǎng)速影響數(shù)據(jù)庫性能是外界因素,如果網(wǎng)速慢則導(dǎo)致服務(wù)器的負(fù)荷量增加,導(dǎo)致數(shù)據(jù)的傳輸速率和系統(tǒng)的吞吐量有所下降,系統(tǒng)請求等待與響應(yīng)時間延長。
⑦SQL邏輯錯誤。當(dāng)應(yīng)用系統(tǒng)出現(xiàn)很多遞歸執(zhí)行的SQL事務(wù),數(shù)據(jù)庫表結(jié)構(gòu)設(shè)置和約束條件設(shè)置不對,SQL事務(wù)執(zhí)行和讀寫效率變低。
4.1 優(yōu)化應(yīng)用系統(tǒng)
數(shù)據(jù)庫往往是應(yīng)用軟件上,由于應(yīng)用系統(tǒng)存在缺陷導(dǎo)致數(shù)據(jù)庫出現(xiàn)死鎖以及運(yùn)行效率降低等。對應(yīng)用系統(tǒng)設(shè)計不夠完善,例如,大型應(yīng)用系統(tǒng)開發(fā)與測試方案,應(yīng)用系統(tǒng)運(yùn)行一段時間系統(tǒng)性能下降,表明應(yīng)用系統(tǒng)存在問題。系統(tǒng)設(shè)計必須要結(jié)合多任務(wù)、高并發(fā)量的設(shè)計過程,并充分分析應(yīng)用系統(tǒng)的設(shè)計。一個應(yīng)用系統(tǒng)的整體性能取決于Oracle數(shù)據(jù)庫的整體性能。
4.2 優(yōu)化數(shù)據(jù)庫的SQL語句
優(yōu)化的SQL語句不僅提高系統(tǒng)的吞吐率和降低I/O訪問次數(shù),而且能占用網(wǎng)絡(luò)傳輸帶寬。優(yōu)化后的執(zhí)行SQL語句使得數(shù)據(jù)庫系統(tǒng)變得高可靠性,從根本上提高服務(wù)器運(yùn)行效率。系統(tǒng)通過執(zhí)行SQL事務(wù)完成系統(tǒng)的功能操作,有簡單的增刪改查操作,還有其他復(fù)雜操作。因此,Oracle數(shù)據(jù)庫的整體性能取決于SQL執(zhí)行效率,另外,編寫SQL語句要注意:
①使數(shù)據(jù)表分區(qū),以分區(qū)查詢避免全表掃描,占用數(shù)據(jù)庫的內(nèi)存空間。
②實現(xiàn)多個數(shù)據(jù)表級聯(lián)查詢,建立表結(jié)構(gòu)索引以減少SQL事務(wù)執(zhí)行。
③實現(xiàn)多個數(shù)據(jù)表集中存儲數(shù)據(jù)塊。
優(yōu)化Oracle系統(tǒng)性能需要通過改進(jìn)編寫SQL語句的過程,根據(jù)影響數(shù)據(jù)庫整體性能的主要因素,要采取不同方案加以優(yōu)化,要考慮到重要技術(shù)實現(xiàn)對系統(tǒng)加以優(yōu)化操作,SQL語句優(yōu)化使得數(shù)據(jù)庫整體性能處于最優(yōu)狀態(tài)。
4.3 優(yōu)化內(nèi)存區(qū)設(shè)置
優(yōu)化系統(tǒng)內(nèi)存設(shè)置區(qū)完成被服務(wù)器和用戶之間的數(shù)據(jù)共享操作,其中包括:優(yōu)化共享池、優(yōu)化高速緩沖區(qū)和優(yōu)化日志訪問區(qū)。優(yōu)化共享池是只存放SQL事務(wù)的存儲空間;優(yōu)化高速緩沖區(qū)的緩存空間越大,則表示可獲取的數(shù)據(jù)就越多,完成的磁盤I/O操作次數(shù)減少;優(yōu)化日志訪問區(qū),如果數(shù)據(jù)庫的緩存區(qū)設(shè)置太小,會導(dǎo)致緩存空間不足,降低系統(tǒng)的性能。
第一,優(yōu)化共享池設(shè)置。優(yōu)化共享池主要縮短用戶操作時間來實現(xiàn)共享池優(yōu)化操作,就是指對于已經(jīng)執(zhí)行SQL命令置于數(shù)據(jù)共享池中實現(xiàn)重復(fù)利用,并不需要再消耗解析與存儲時間,系統(tǒng)對共享池進(jìn)行優(yōu)化后需要盡量保證存放在高速緩存區(qū)內(nèi)的數(shù)據(jù),數(shù)據(jù)的應(yīng)用程序被訪問到。因此,基于高速緩沖區(qū)實現(xiàn)獲取數(shù)據(jù)的命中率方法。
第二,優(yōu)化高速緩沖區(qū)的數(shù)據(jù)。高速緩沖區(qū)的優(yōu)化可以縮短用戶操作的時間,當(dāng)用戶在進(jìn)行數(shù)據(jù)查詢可以在高速緩沖區(qū)中獲取,如果用戶查詢數(shù)據(jù)在高速緩沖區(qū)中獲取,用戶請求等待時間就會縮短,因此,數(shù)據(jù)庫系統(tǒng)將會通過高速緩沖區(qū)將數(shù)據(jù)返回給用戶進(jìn)行顯示,相反,如果不在高速緩沖區(qū)中獲取數(shù)據(jù),那么,數(shù)據(jù)庫會從文件服務(wù)器中將數(shù)據(jù)讀取一份,再復(fù)制一份放在高速緩沖區(qū)里,這種方式便于后面的用戶讀取數(shù)據(jù)操作。因此,當(dāng)用戶進(jìn)行數(shù)據(jù)檢索時,要保證高速緩存區(qū)的存儲空間足夠大,只有保證高數(shù)據(jù)緩沖區(qū)有較大的數(shù)據(jù)命中率才能優(yōu)化系統(tǒng)的性能。
第三,優(yōu)化日志緩沖區(qū)。優(yōu)化日志緩沖區(qū)主要實現(xiàn)在于對數(shù)據(jù)的修改操作。為了系統(tǒng)的操作日志寫進(jìn)該緩存區(qū)文件中,首先,要將操作日志寫入高速緩沖區(qū),然后基于用戶的請求進(jìn)程操作緩沖區(qū)文件,若日志緩沖區(qū)沒的空間不足,系統(tǒng)的操作日志不可存儲在其中,導(dǎo)致磁盤I/O操作頻繁,嚴(yán)重影響了數(shù)據(jù)庫的處理性能。
4.4 優(yōu)化設(shè)置數(shù)據(jù)庫的回滾段
在Oracle中,數(shù)據(jù)庫的回滾段設(shè)置的目的是為了保存原始數(shù)據(jù)的內(nèi)容,基于原始內(nèi)容可以撤銷用戶未保存的數(shù)據(jù),Oracle數(shù)據(jù)庫的真正作用也是為了從系統(tǒng)SQL執(zhí)行操作的失敗過程中將原始數(shù)據(jù)恢復(fù)上一個節(jié)點,數(shù)據(jù)庫設(shè)置回滾方便數(shù)據(jù)處理中的重要操作。在優(yōu)化數(shù)據(jù)庫回滾段設(shè)置時,也需要根據(jù)優(yōu)點建立不同的數(shù)據(jù)庫回滾段,并且將不同的數(shù)據(jù)庫回滾段置于表的分區(qū)中。
4.5 優(yōu)化磁盤I/O操作
優(yōu)化磁盤I/O操作是數(shù)據(jù)庫性能優(yōu)化關(guān)鍵環(huán)節(jié),磁盤I/O操作優(yōu)劣取決于很多因素影響。其中有優(yōu)化磁盤I/O操作次數(shù)太多,分配數(shù)據(jù)庫存儲空間不當(dāng),因此,減少I/O操作的次數(shù)頻率需要將大部分?jǐn)?shù)據(jù)存儲在高速緩沖區(qū)內(nèi),當(dāng)管理員降低Oracle服務(wù)器查詢等待時間,需要將數(shù)據(jù)表實現(xiàn)分區(qū)和索引。
第一,優(yōu)化數(shù)據(jù)表的索引Index結(jié)構(gòu)。數(shù)據(jù)庫中表結(jié)構(gòu)重要就是索引設(shè)置,優(yōu)化表的索引結(jié)構(gòu)性能是優(yōu)化整體性能的基礎(chǔ),原因是大多數(shù)的查詢都是基于索引實現(xiàn)的,如果能夠有效利用表的索引結(jié)構(gòu),從而提高系統(tǒng)訪問的效率,提高了用戶查詢效率。利用表的索引減少數(shù)據(jù)庫中的I/O讀寫次數(shù),在建立表的索引結(jié)構(gòu)時,并不是索引越多越好,雖然,有索引的數(shù)據(jù)庫比沒有索引的檢索效率,但有的時候需要修改表的索引,修改索引操作影響了數(shù)據(jù)庫的性能。
第二,合理劃分表分區(qū)技術(shù)。表分區(qū)可以實現(xiàn)將不同數(shù)據(jù)存儲到文件磁盤中,實現(xiàn)對數(shù)據(jù)庫實現(xiàn)物理區(qū)分,合理劃分表分區(qū)技術(shù)時,系統(tǒng)需要把用戶查詢分布不同的表分區(qū)中進(jìn)行,實現(xiàn)數(shù)據(jù)分區(qū)查詢可以大大減小檢索時間,在進(jìn)行分區(qū)的同時,可將數(shù)據(jù)分散到不同的磁盤中,磁盤I/O操作增加會嚴(yán)重影響數(shù)據(jù)庫的性能。
4.6 CPU性能調(diào)整
本文通過對CPU性能優(yōu)化利用各種資源,提高數(shù)據(jù)庫的CPU性能。
第一,使用多個CPU共同完成用戶的事務(wù)執(zhí)行操作,如果資源允許的情況下,需要將數(shù)據(jù)庫的服務(wù)器和CPU資源實現(xiàn)分離。
第二,實現(xiàn)數(shù)據(jù)檢索時,可以實現(xiàn)批量檢索方式,同時進(jìn)行數(shù)據(jù)檢索功能。
4.7 優(yōu)化oracle表空間
優(yōu)化數(shù)據(jù)表空間是重要的概念,高效合理的優(yōu)化表空間可以實現(xiàn)提高系統(tǒng)的性能。合理優(yōu)化表空間應(yīng)適當(dāng)數(shù)據(jù)分離和建立表的索引結(jié)構(gòu)。減少磁盤I/O操作應(yīng)分離操作日志;在數(shù)據(jù)庫開銷上應(yīng)分離表的存儲空間、數(shù)據(jù)存儲空間。
在需求階段分析階段,Oracle性能優(yōu)化是應(yīng)用系統(tǒng)設(shè)計的基礎(chǔ),而在系統(tǒng)運(yùn)行過程中不斷地進(jìn)行優(yōu)化系統(tǒng)的管理性能,建設(shè)性能狀態(tài)良好的系統(tǒng)。
[1]蓋國強(qiáng).循序漸進(jìn)Oracle數(shù)據(jù)庫管理、優(yōu)化與備份恢復(fù)[M].北京:人民郵電出版社,2007
[2]趙夢勤,李秀蘭.ORACLE數(shù)據(jù)庫應(yīng)用系統(tǒng)的優(yōu)化策略[J].計算機(jī)工程與應(yīng)用.2003(27):217-218
[3]潘敏.Oracle數(shù)據(jù)庫性能優(yōu)化的分析[J].電腦編程技巧與維護(hù),2010(20):21-22
[4]韓云波.Oracle性能調(diào)整技術(shù)研究[J].電腦知識與技術(shù),2010(7):65-66