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