戴偉敏
(福州大學 陽光學院基礎部,福建 福州 350000)
Oracle數(shù)據(jù)庫系統(tǒng)性能優(yōu)化與調(diào)整
戴偉敏
(福州大學 陽光學院基礎部,福建 福州 350000)
Oracle數(shù)據(jù)庫是當前人們應用最廣泛的數(shù)據(jù)庫之一,隨著Oracle數(shù)據(jù)庫使用用戶的數(shù)量增多,數(shù)據(jù)庫系統(tǒng)性能也逐漸暴露出它的缺陷。如何有效保證Oracle數(shù)據(jù)庫高效運行,優(yōu)化、調(diào)整數(shù)據(jù)庫性能是我們必須解決好的問題.本文試從性能優(yōu)化與調(diào)整概述入手,重點分析影響Oracle數(shù)據(jù)庫系統(tǒng)性能的原因,然后詳細闡述Oracle數(shù)據(jù)庫系統(tǒng)優(yōu)化策略,通過這些數(shù)據(jù)庫系統(tǒng)優(yōu)化策略的介紹,期望能使Oracle數(shù)據(jù)庫系統(tǒng)得到最優(yōu)的操作性能.
Oracle數(shù)據(jù)庫;性能優(yōu)化與調(diào)整;策略
Oracle數(shù)據(jù)庫是目前用戶使用最為廣泛的數(shù)據(jù)庫管理系統(tǒng),選擇使用Oracle作為數(shù)據(jù)庫應用系統(tǒng)的用戶,一般是需要處理的數(shù)據(jù)量較多,對于這種大型數(shù)據(jù)庫來說,數(shù)據(jù)庫運行效率是最重要的.同時,運行效率也是數(shù)據(jù)庫評估的重要指標之一.然而,在實際應用中,隨著訪問量的加大,需要處理的數(shù)據(jù)日益增加,數(shù)據(jù)庫系統(tǒng)的性能也將下降,為此,數(shù)據(jù)庫系統(tǒng)性能優(yōu)化與調(diào)整將突顯出其更為重要作用.
性能優(yōu)化指通過改善系統(tǒng)組件的性能,以最大限度地增加數(shù)據(jù)庫的吞吐量和相應響應時間的最小化.Oracle數(shù)據(jù)庫性能優(yōu)化所遵循的原則:通過盡量少的磁盤訪問獲得用戶需要的數(shù)據(jù).
性能調(diào)整是指通過修改系統(tǒng)參數(shù)、改變系統(tǒng)配置、優(yōu)化應用程序等方式來改變系統(tǒng)性能.它包括對操作系統(tǒng)、硬件設置等系統(tǒng)進行優(yōu)化配置,以及對訪問這些組件的應用的詳細分析與優(yōu)化.
Oracle數(shù)據(jù)庫系統(tǒng)的運行效率會受到來自各個方面的影響,而這些影響也在不同程度上制約著數(shù)據(jù)庫系統(tǒng)性能的發(fā)揮,具體說來,主要體現(xiàn)在以下幾個方面中:
2.1 Oracle數(shù)據(jù)庫服務器的性能.數(shù)據(jù)庫系統(tǒng)的關鍵部分在于服務器,而服務器性能的好壞直接決定著整個系統(tǒng)能否順利的運轉(zhuǎn).而服務器的操作系統(tǒng)和硬件設施又直接決定著服務器性能的好壞.
2.2 數(shù)據(jù)庫的配置.實際上,數(shù)據(jù)庫的配置情況是才是影響數(shù)據(jù)庫系統(tǒng)性能的主要原因,可以說它是整個數(shù)據(jù)庫得以優(yōu)化的關鍵和核心之所在.數(shù)據(jù)庫配置的優(yōu)化主要包括內(nèi)存區(qū)的優(yōu)化、網(wǎng)絡I/O的設置、CPU優(yōu)化以及碎片整理等等.
2.3 網(wǎng)絡I/O的設置.網(wǎng)絡I/O的設置對于數(shù)據(jù)庫系統(tǒng)性能的優(yōu)劣也起著不可小覷的重要作用.因為執(zhí)行命令的應用程序是要通過網(wǎng)絡與數(shù)據(jù)庫的服務器產(chǎn)生作用的.
2.4 應用程序的運用.應用程序的應用也在一定程度上影響著數(shù)據(jù)庫性能的優(yōu)劣.特別是關于SQL語句的應用、程序設計、對象的使用情況、數(shù)據(jù)庫連接方式等等,這些因素都或多或少地影響了數(shù)據(jù)庫的運行效率.
任何一個數(shù)據(jù)庫管理系統(tǒng)都會面臨數(shù)據(jù)庫運行效率的問題,在了解了影響數(shù)據(jù)庫系統(tǒng)性能的因素之后,我們可以從這些因素入手,對癥下藥將數(shù)據(jù)庫的性能調(diào)整到最優(yōu).具體說來主要是從以下幾個方面對Oracle數(shù)據(jù)庫系統(tǒng)性能進行優(yōu)化與調(diào)整:
Oracle數(shù)據(jù)庫的內(nèi)存結構主要分為兩部分:SGA和PGA.這兩部分內(nèi)存結構的分配是否合理決定著數(shù)據(jù)庫系統(tǒng)的性能.其中SGA是Oracle數(shù)據(jù)庫的核心與靈魂,是對數(shù)據(jù)庫數(shù)據(jù)進行快速訪問的一個系統(tǒng)區(qū)域,主要是由共享池,數(shù)據(jù)緩沖區(qū)和日志緩沖區(qū)三部分組成.
3.1.1 共享池的優(yōu)化與調(diào)整.共享池的優(yōu)化與調(diào)整主要是通過縮短操作時間來實現(xiàn)的.具體說來,就是指對于之前已經(jīng)分析過的模本,執(zhí)行命令的語句可以在共享池中找到并進行重用,不需要再消耗時間另外進行解析.這樣一來就要求我們在對共享池進行優(yōu)化的時候,要盡量保證存放在數(shù)據(jù)庫中的信息在應用程序中能夠經(jīng)常被訪問到.因此,我們可以通過數(shù)據(jù)庫緩沖區(qū)的命中率來了解到共享池的合適程度.
3.1.2 數(shù)據(jù)緩沖區(qū)的調(diào)整.數(shù)據(jù)緩沖區(qū)的調(diào)整同樣可以縮短操作時間.用戶在進行數(shù)據(jù)檢索時相關數(shù)據(jù)已經(jīng)存儲于緩沖區(qū)中.如果用戶進行檢索查詢的相關數(shù)據(jù)包含在緩沖區(qū)中,那么系統(tǒng)將會通過緩沖區(qū)直接將數(shù)據(jù)傳送給用戶,相反,如果用戶所查詢的數(shù)據(jù)不在緩沖區(qū)內(nèi),那么系統(tǒng)會先從數(shù)據(jù)文件中通過服務器進程將數(shù)據(jù)讀取出來發(fā)送到緩沖區(qū)里,然后再按照之前所講述的方式由緩沖區(qū)發(fā)送給用戶,這樣一來就多了一個中間環(huán)節(jié),使得操作時間增長.因此,當用戶進行數(shù)據(jù)查詢時,也要盡可能多的保證在緩沖區(qū)內(nèi)有足夠多的相關數(shù)據(jù),只有這樣才能很好的提高數(shù)據(jù)緩沖區(qū)的性能.
3.1.3 調(diào)整日志緩沖區(qū).日志緩沖區(qū)的作用在于將修改的數(shù)據(jù)信息存放于此.為了將日志寫進日志文件,首先要將日志放入緩沖區(qū),然后由LGWR進程在相關條件滿足時將已存放在日志緩沖區(qū)的日志信息寫入到日志文件里.若日志緩沖區(qū)沒有足夠的空間存放信息,日志就無法寫入,也就是說寫入失敗.這樣也會導致網(wǎng)絡I/O的運行頻繁,嚴重影響了數(shù)據(jù)庫的系統(tǒng)性能.
3.1.4 PGA的調(diào)整.PGA區(qū)的主要構成部分是由會話區(qū)和排序區(qū).其中,排序區(qū)的設置對數(shù)據(jù)庫的性能影響重大.在排序的方式上,主要有兩種方式,一種是在PGA的排序區(qū)進行排序.一種是在臨時表空間的臨時段中進行排序.但是,在使用臨時段進行排序時,因要對磁盤進行網(wǎng)絡I/O操作,這樣就延長了運行時間,影響了排序效率.所以,在排序時,要盡量多用排序區(qū)進行排序操作.
對于數(shù)據(jù)庫系統(tǒng)來說,磁盤I/O操作是數(shù)據(jù)庫性能優(yōu)化最重要的方面,磁盤I/O性能優(yōu)劣取決于多個方面的影響.其中有I/O操作次數(shù)過多,數(shù)據(jù)塊空間的分配等原因.那么減少I/O操作的次數(shù)最有效的辦法就是將使用頻率搞的數(shù)據(jù)存放在緩沖區(qū)內(nèi),同時也要降低Oracle服務器查詢信息的時間,方法之一就是分區(qū)和建立索引.
3.2.1 優(yōu)化設計索引Index.數(shù)據(jù)庫中非常重要的結構就包括了索引,它是優(yōu)化性能的基礎.原因在于索引能夠快速找到需查找數(shù)據(jù)的地址.有效利用索引,從而提高訪問數(shù)據(jù)庫的速度,這樣就提高了查詢效率.同時可以利用索引減少數(shù)據(jù)庫中的磁盤讀寫次數(shù).在建立索引時,也要注意并是不建立更多的索引就越好,雖然有著合理科學的索引數(shù)據(jù)庫比沒有建立索引數(shù)據(jù)庫的效率要高好幾十倍,但如果有些索引經(jīng)常需要修改,這樣不僅影響了系統(tǒng)性能,也占據(jù)了系統(tǒng)的存儲空間.
3.2.2 有效利用分區(qū)技術.分區(qū)可以將不同的信息數(shù)據(jù)保存在不同的磁盤里,這是將數(shù)據(jù)在數(shù)據(jù)庫中進行物理區(qū)分.在利用分區(qū)技術時,把需要查詢的數(shù)據(jù)在不同的分區(qū)中進行掃描,可以大大縮短查詢時間,而不要進行全表掃描.在進行分區(qū)的同時,可將數(shù)據(jù)分散到不同的磁盤中,這樣磁盤I/O也不會競爭嚴重了.
在Oracle 數(shù)據(jù)庫中,回滾段設置的目的是保存數(shù)據(jù)的原始版本,利用初始版本可以撤銷用戶未保存的資料.Oracle數(shù)據(jù)庫的作用之一就是可以從系統(tǒng)操作的失敗中得到數(shù)據(jù)的恢復,在此,就體現(xiàn)出了回滾段在數(shù)據(jù)處理中的重要作用.在優(yōu)化回滾段時,也要根據(jù)用處的大小建立大小不等的回滾段,并且將這些回滾段分散到不同的分區(qū)中.
數(shù)據(jù)碎片的產(chǎn)生是必然的,因為系統(tǒng)操作的不斷出現(xiàn),數(shù)據(jù)對象的不斷變化,由此產(chǎn)生的碎片可以分為三類,分別為表空間級、表級和索引級.
3.4.1 表空間級碎片是最基礎的碎片,往往是由于一些基本的操作引起的,例如執(zhí)行命令的建立、刪除等等.優(yōu)化的措施可以通過執(zhí)行導出命令將數(shù)據(jù)導出,接著利用TRUNCATE 刪除導出的數(shù)據(jù),最后再利用有效的程度將表空間級碎片清除.
3.4.2 表級碎片的產(chǎn)生可以通過設置合適的數(shù)據(jù)塊來消除,它是由于數(shù)據(jù)庫存儲不連續(xù)所致.在創(chuàng)建數(shù)據(jù)庫時,根據(jù)所需記錄的數(shù)據(jù)大小來設置相應的數(shù)據(jù)塊大小,可以提高數(shù)據(jù)塊系統(tǒng)的運行效率.
3.4.3 索引級碎片是由于索引過于頻繁所致,通過干擾B-TREE結構和葉節(jié)點的排序引起的.調(diào)整的措施可以減少已建立索引的數(shù)據(jù)數(shù)量,特別是變化頻率較低的數(shù)據(jù),這樣可以降低索引碎片的產(chǎn)生.
通過對CPU性能的調(diào)整可以有效利用數(shù)據(jù)庫中的各種資源,提高數(shù)據(jù)塊的性能.
3.5.1 盡可能多地使用多個CPU來處理用戶的事務,如果有可能的話,需要將服務器和CPU請求分開.
3.5.2 在進行數(shù)據(jù)查詢時,可以使用PQO查詢方式.PQO方式可以在不同的磁盤中同時進行SQL語句的執(zhí)行處理,同時進行數(shù)據(jù)的讀取.
數(shù)據(jù)庫所以的操作都是通過SQL語句來執(zhí)行的.包括最簡單的添加和刪除.所以,Oracle數(shù)據(jù)庫的性能高低在很大程度上也取決于SQL語句的執(zhí)行效率,為盡量提高SQL語句的執(zhí)行效率,在書寫SQL語句時應注意以下幾點.
(1)建立分區(qū)后,減少全表掃描,而要分區(qū)查詢.
(2)對于需要經(jīng)常進行查詢的表,可以通過建立索引減少SQL語句的執(zhí)行.
(3)將多個常用表放在一個數(shù)據(jù)塊里.
(4)在查詢時,對于需要連接的查詢要有充分的連接條件.
Oracle數(shù)據(jù)庫系統(tǒng)性能優(yōu)化與調(diào)整是一個需要通過不斷摸索、總結的過程,在實踐中,必須先了解影響數(shù)據(jù)庫系統(tǒng)性能的因素,針對這些不同的因素采取不同的有效措施予以調(diào)整,同時也需要我們采取更加先進的技術來對數(shù)據(jù)庫進行調(diào)優(yōu),使得數(shù)據(jù)庫系統(tǒng)獲得最優(yōu)性能.
〔1〕仇道霞,陸偉,侯曉輝:Oracle數(shù)據(jù)庫性能調(diào)整優(yōu)化[J].山東輕工業(yè)學院學報(自然科學版),2010(3).
〔2〕孫富偉,晏斌.Oracle數(shù)據(jù)庫優(yōu)化策略的探討與研究[J].河南科技,2010(10).
〔3〕魏亞楠,宋義秋.oracle數(shù)據(jù)庫應用系統(tǒng)的性能優(yōu)化[J].制造業(yè)自動化,2010(8).
TP 311.132.3
A
1673-260X(2010)12-0041-02