資源描述:
《Oracle數(shù)據(jù)庫優(yōu)化方案.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、詳解Oracle數(shù)據(jù)庫優(yōu)化方案與實踐時間:2010-02-2614:04:51來源:網(wǎng)絡(luò)作者:未知點擊:817次一、前言二、ORACLE數(shù)據(jù)庫優(yōu)化概述1、內(nèi)存等參數(shù)配置的優(yōu)化2、減少物理讀寫的優(yōu)化3、批量重復(fù)操作的SQL語句及大表操作的優(yōu)化二、ORACLE數(shù)據(jù)庫優(yōu)化方案1、內(nèi)存等Oracle系統(tǒng)參數(shù)配置2、使用索引3、表分區(qū)4、Procedure優(yōu)化5、其他改造6、維護(hù)作業(yè)計劃三、ORACLE數(shù)據(jù)庫優(yōu)化前后比較1、批量重復(fù)的SQL語句執(zhí)行性能2、一些單次、不常用的操作的語句執(zhí)行性能四、參考1、常用的優(yōu)化工具2、參考文獻(xiàn)
2、一、前言隨著實際項目的啟動,實際項目中使用的Oracle數(shù)據(jù)庫經(jīng)過一段時間的運行,在線保存的數(shù)據(jù)量和業(yè)務(wù)處理的數(shù)據(jù)量在逐漸增大,最初的Oracle設(shè)置,與現(xiàn)在實際需要的運行性能有一定差距,需要進(jìn)行一些優(yōu)化調(diào)整。本文將結(jié)合本人實際維護(hù)經(jīng)驗,相應(yīng)地提出實際項目數(shù)據(jù)處理的一些優(yōu)化方法,以供參考。適用于Oracle9i。二、Oracle數(shù)據(jù)庫優(yōu)化概述Oracle數(shù)據(jù)庫的優(yōu)化,針對不同的應(yīng)用,會有側(cè)重點不同的優(yōu)化方法,根據(jù)我們實際項目的應(yīng)用特點,我們主要關(guān)心的是每次事務(wù)執(zhí)行完成的時間長短。從Oracle數(shù)據(jù)庫本身的特點,我們可以
3、把優(yōu)化工作劃分為初始優(yōu)化設(shè)置,微優(yōu)化。在初始優(yōu)化設(shè)置時,我們只能根據(jù)硬件情況,估計業(yè)務(wù)運行的情況,綜合經(jīng)驗,給出一種經(jīng)驗設(shè)置,大體上來說,這種經(jīng)驗設(shè)置離滿足優(yōu)化需求的目標(biāo)不是很遠(yuǎn)。在完成了初始優(yōu)化設(shè)置后,經(jīng)過一段時間的業(yè)務(wù)運行,已可開始收集實際運行環(huán)境的性能數(shù)據(jù),此時,就可以對各種Oracle性能指標(biāo)、各種關(guān)心的事務(wù)操作進(jìn)行性能評估,然后進(jìn)行微優(yōu)化了。Oracle優(yōu)化,不是一個一蹴而就的工作,也不是一個一勞永逸的工作,需要定期維護(hù),定期觀察,在發(fā)現(xiàn)性能瓶頸時及時進(jìn)行調(diào)整。Oracle總是存在性能瓶頸的,不使用、不操作的
4、數(shù)據(jù)庫總是最快的,在解決當(dāng)前瓶頸后,總是會有另一個瓶頸出現(xiàn),所以在優(yōu)化前,我們需要確定一個優(yōu)化目標(biāo),我們的目標(biāo)是滿足我們的應(yīng)用性能要求就可以了。Oracle優(yōu)化,涉及的范圍太廣泛,包含的有主機(jī)性能,內(nèi)存使用性能,網(wǎng)絡(luò)傳輸性能,SQL語句執(zhí)行性能等等,從我們面向網(wǎng)管來說,滿足事務(wù)執(zhí)行速度性能主要表現(xiàn)在:1)批量重復(fù)的SQL語句執(zhí)行性能(主要是通過Procedure計算完成數(shù)據(jù)合并和數(shù)據(jù)匯總的性能和批量數(shù)據(jù)采集入庫的性能);2)一些單次、不常用的操作的語句執(zhí)行性能(主要是GUI的非規(guī)律操作)。根據(jù)這兩個特點,我們可把優(yōu)化方
5、法歸納到3個重要方向:1)內(nèi)存等參數(shù)配置的優(yōu)化。內(nèi)存優(yōu)化,是性能受益最快的地方。2)減少物理讀寫的優(yōu)化。內(nèi)存邏輯I/O操作的時間,遠(yuǎn)遠(yuǎn)小于物理I/O的操作時間。3)批量重復(fù)操作的SQL語句及大表操作的優(yōu)化。減少SQL執(zhí)行次數(shù),減少大表操作次數(shù)。下面主要針對得益最大的這三個方向的優(yōu)化進(jìn)行闡述。1、內(nèi)存等參數(shù)配置的優(yōu)化對于大多數(shù)應(yīng)用來說,最直接、最快速得到優(yōu)化收益的,肯定屬于內(nèi)存的優(yōu)化。給每個Oracle內(nèi)存塊分配合理的大小,可以有效的使用數(shù)據(jù)庫。通過觀察各種數(shù)據(jù)庫活動在內(nèi)存里的命中率,執(zhí)行情況,我們能很快的掌握數(shù)據(jù)庫的主
6、要瓶頸。我們從下面的一條SQL語句的執(zhí)行步驟就可知道。一個SQL語句,從發(fā)布到執(zhí)行,會按順序經(jīng)歷如下幾個步驟:1)Oracle把該SQL的字符轉(zhuǎn)換成它們的ASCII等效數(shù)字碼。2)該ASCII數(shù)字碼被傳送給一個散列算法,生成一個散列值。3)用戶serverprocess查看該散列值是否在sharedpool內(nèi)存塊中存在。若存在:4)使用sharedpool中緩存的版本來執(zhí)行。若不存在:4)檢查該語句的語義正確性。5)執(zhí)行對象解析(這期間對照數(shù)據(jù)字典,檢查被引用的對象的名稱和結(jié)構(gòu)的正確性)。6)檢查數(shù)據(jù)字典,收集該操作所
7、引用的所有對象的相關(guān)統(tǒng)計數(shù)據(jù)。7)準(zhǔn)備執(zhí)行計劃,從可用的執(zhí)行計劃中選擇一個執(zhí)行計劃。(包括對storedoutline和materializedview的相關(guān)使用的決定)8)檢查數(shù)據(jù)字典,確定所引用對象的安全性。9)生成一個編譯代碼(P-CODE)。10)執(zhí)行。這里,通過內(nèi)存的合理分配,參數(shù)的合理設(shè)置,我們主要解決:1)減少執(zhí)行到第五步的可能,節(jié)約SQL語句解析的時間。第五步以后的執(zhí)行過程,是一個很消耗資源的操作過程。2)通過內(nèi)存配置,盡可能讓SQL語句所做的操作和操作的數(shù)據(jù)都在內(nèi)存里完成。大家都知道,從內(nèi)存讀取數(shù)據(jù)的
8、速度,要遠(yuǎn)遠(yuǎn)快于從物理硬盤上讀數(shù)據(jù),一次內(nèi)存排序要比硬盤排序快很多倍。3)根據(jù)數(shù)據(jù)庫內(nèi)存活動,減少每個內(nèi)存塊活動的響應(yīng)時間,充分利用每個內(nèi)存塊,減少內(nèi)存latch爭用發(fā)生的次數(shù)。2、減少物理讀寫的優(yōu)化無論如何配置Oracle數(shù)據(jù)庫,我們的網(wǎng)管系統(tǒng),每小時周期性的都會有新數(shù)據(jù)被處理,就會發(fā)生物理讀寫,這是避免不了的。減少物理讀寫的優(yōu)