資源描述:
《ORACLE數(shù)據(jù)庫(kù)優(yōu)化方案.doc》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、ORACLE數(shù)據(jù)庫(kù)優(yōu)化方案摘要:本文主要從大型數(shù)據(jù)庫(kù)ORACLE環(huán)境四個(gè)不同級(jí)別的調(diào)整分析入手,分析ORACLE的系統(tǒng)結(jié)構(gòu)和工作機(jī)理,從九個(gè)不同方面較全面地總結(jié)了ORACLE數(shù)據(jù)庫(kù)的優(yōu)化調(diào)整方案。從多個(gè)角度出發(fā),對(duì)Oracle優(yōu)化中的很多關(guān)鍵問(wèn)題進(jìn)行了深入全面的探討,從內(nèi)存優(yōu)化、IO規(guī)劃及優(yōu)化到SQL優(yōu)化調(diào)整,以較為完整的體系闡述了Oracle的優(yōu)化技術(shù),更主要的是,結(jié)合實(shí)際應(yīng)用環(huán)境,提供了一系列解決問(wèn)題的思路和方法,具有很強(qiáng)的實(shí)戰(zhàn)性和可操作性。關(guān)鍵詞:ORACLE數(shù)據(jù)庫(kù)環(huán)境調(diào)整優(yōu)化設(shè)計(jì)方案前言對(duì)于ORACLE數(shù)據(jù)庫(kù)的數(shù)據(jù)存取,主要有四個(gè)不同的調(diào)整級(jí)別,第一級(jí)
2、調(diào)整是操作系統(tǒng)級(jí)包括硬件平臺(tái),第二級(jí)調(diào)整是ORACLERDBMS級(jí)的調(diào)整,第三級(jí)是數(shù)據(jù)庫(kù)設(shè)計(jì)級(jí)的調(diào)整,最后一個(gè)調(diào)整級(jí)是SQL級(jí)。通常依此四級(jí)調(diào)整級(jí)別對(duì)數(shù)據(jù)庫(kù)進(jìn)行調(diào)整、優(yōu)化,數(shù)據(jù)庫(kù)的整體性能會(huì)得到很大的改善。下面從九個(gè)不同方面介紹ORACLE數(shù)據(jù)庫(kù)優(yōu)化設(shè)計(jì)方案。一、數(shù)據(jù)庫(kù)優(yōu)化自由結(jié)構(gòu)OFA(OptimalflexibleArchitecture)數(shù)據(jù)庫(kù)的邏輯配置對(duì)數(shù)據(jù)庫(kù)性能有很大的影響,優(yōu)化自由結(jié)構(gòu)OFA,簡(jiǎn)單地講就是在數(shù)據(jù)庫(kù)中可以高效自由地分布邏輯數(shù)據(jù)對(duì)象,因此首先要對(duì)數(shù)據(jù)庫(kù)中的邏輯對(duì)象根據(jù)他們的使用方式和物理結(jié)構(gòu)對(duì)數(shù)據(jù)庫(kù)的影響來(lái)進(jìn)行分類(lèi),這種分類(lèi)包括將系統(tǒng)數(shù)
3、據(jù)和用戶(hù)數(shù)據(jù)分開(kāi)、一般數(shù)據(jù)和索引數(shù)據(jù)分開(kāi)、低活動(dòng)表和高活動(dòng)表分開(kāi)等等。數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的結(jié)果應(yīng)當(dāng)符合下面的準(zhǔn)則:(1)把以同樣方式使用的段類(lèi)型存儲(chǔ)在一起;(2)按照標(biāo)準(zhǔn)使用來(lái)設(shè)計(jì)系統(tǒng);(3)存在用于例外的分離區(qū)域;(4)最小化表空間沖突;(5)將數(shù)據(jù)字典分離。二、充分利用系統(tǒng)全局區(qū)域SGA(SYSTEMGLOBALAREA)SGA是oracle數(shù)據(jù)庫(kù)的心臟。用戶(hù)的進(jìn)程對(duì)這個(gè)內(nèi)存區(qū)發(fā)送事務(wù),并且以這里作為高速緩存讀取命中的數(shù)據(jù),以實(shí)現(xiàn)加速的目的。正確的SGA大小對(duì)數(shù)據(jù)庫(kù)的性能至關(guān)重要。SGA包括以下幾個(gè)部分:1、數(shù)據(jù)塊緩沖區(qū)(datablockbuffercach
4、e)是SGA中的一塊高速緩存,占整個(gè)數(shù)據(jù)庫(kù)大小的1%-2%,用來(lái)存儲(chǔ)從數(shù)據(jù)庫(kù)重讀取的數(shù)據(jù)塊(表、索引、簇等),因此采用leastrecentlyused(LRU,最近最少使用)的方法進(jìn)行空間管理。2、字典緩沖區(qū)。該緩沖區(qū)內(nèi)的信息包括用戶(hù)賬號(hào)數(shù)據(jù)、數(shù)據(jù)文件名、段名、盤(pán)區(qū)位置、表說(shuō)明和權(quán)限,它也采用LRU方式管理。3、重做日志緩沖區(qū)。該緩沖區(qū)保存為數(shù)據(jù)庫(kù)恢復(fù)過(guò)程中用于前滾操作。4、SQL共享池。保存執(zhí)行計(jì)劃和運(yùn)行數(shù)據(jù)庫(kù)的SQL語(yǔ)句的語(yǔ)法分析樹(shù)。也采用LRU算法管理。如果設(shè)置過(guò)小,語(yǔ)句將被連續(xù)不斷地再裝入到庫(kù)緩存,影響系統(tǒng)性能。三、規(guī)范與反規(guī)范設(shè)計(jì)數(shù)據(jù)庫(kù)1.規(guī)范化所
5、謂規(guī)范化實(shí)質(zhì)上就是概念的單一化。數(shù)據(jù)庫(kù)中數(shù)據(jù)規(guī)范化的優(yōu)點(diǎn)是減少了數(shù)據(jù)冗余,節(jié)約了存儲(chǔ)空間,相應(yīng)邏輯和物理的I/O次數(shù)減少,同時(shí)加快了增、刪、改的速度。2.反規(guī)范化在數(shù)據(jù)庫(kù)的設(shè)計(jì)過(guò)程中有時(shí)故意保留非規(guī)范化約束,或者規(guī)范化以后又反規(guī)范,這樣做通常是為了改進(jìn)數(shù)據(jù)庫(kù)的查詢(xún)性能,加快數(shù)據(jù)庫(kù)系統(tǒng)的響應(yīng)速度。3.數(shù)據(jù)庫(kù)設(shè)計(jì)中的優(yōu)化策略數(shù)據(jù)應(yīng)當(dāng)按兩種類(lèi)別進(jìn)行組織:頻繁訪問(wèn)的數(shù)據(jù)和頻繁修改的數(shù)據(jù)。比較復(fù)雜的方法是將規(guī)范化的表作為邏輯數(shù)據(jù)庫(kù)設(shè)計(jì)的基礎(chǔ),然后再根據(jù)整個(gè)應(yīng)用系統(tǒng)的需要,物理地非規(guī)范化數(shù)據(jù)。規(guī)范與反規(guī)范都是建立在實(shí)際的操作基礎(chǔ)之上的約束,脫離了實(shí)際兩者都沒(méi)有意義。只有把
6、兩者合理地結(jié)合在一起,才能相互補(bǔ)充,發(fā)揮各自的優(yōu)點(diǎn)。四、合理設(shè)計(jì)和管理表1、利用表分區(qū)分區(qū)將數(shù)據(jù)在物理上分隔開(kāi),不同分區(qū)的數(shù)據(jù)可以制定保存在處于不同磁盤(pán)上的數(shù)據(jù)文件里。這樣,當(dāng)對(duì)這個(gè)表進(jìn)行查詢(xún)時(shí),只需要在表分區(qū)中進(jìn)行掃描,而不必進(jìn)行全表掃描,明顯縮短了查詢(xún)時(shí)間,另外處于不同磁盤(pán)的分區(qū)也將對(duì)這個(gè)表的數(shù)據(jù)傳輸分散在不同的磁盤(pán)I/O,一個(gè)精心設(shè)置的分區(qū)可以將數(shù)據(jù)傳輸對(duì)磁盤(pán)I/O競(jìng)爭(zhēng)均勻地分散開(kāi)。2、避免出現(xiàn)行連接和行遷移在建立表時(shí),由于參數(shù)pctfree和pctused不正確的設(shè)置,數(shù)據(jù)塊中的數(shù)據(jù)會(huì)出現(xiàn)行鏈接和行遷移,也就是同一行的數(shù)據(jù)不保存在同一的數(shù)據(jù)塊中。因此,
7、在創(chuàng)建表時(shí),就應(yīng)該充分估計(jì)到將來(lái)可能出現(xiàn)的數(shù)據(jù)變化,正確地設(shè)置這兩個(gè)參數(shù),盡量減少數(shù)據(jù)庫(kù)中出現(xiàn)行鏈接和行遷移。3、別名的使用別名是大型數(shù)據(jù)庫(kù)的應(yīng)用技巧,就是表名、列名在查詢(xún)中以一個(gè)字母為別名,查詢(xún)速度要比建連接表快1.5倍。五、索引Index的優(yōu)化設(shè)計(jì)1、管理組織索引索引可以大大加快數(shù)據(jù)庫(kù)的查詢(xún)速度,索引把表中的邏輯值映射到安全的RowID,因此索引能進(jìn)行快速定位數(shù)據(jù)的物理地址。對(duì)一個(gè)建有索引的大型表的查詢(xún)時(shí),索引數(shù)據(jù)可能會(huì)用完所有的數(shù)據(jù)塊緩存空間,ORACLE不得不頻繁地進(jìn)行磁盤(pán)讀寫(xiě)來(lái)獲取數(shù)據(jù),因此在對(duì)一個(gè)大型表進(jìn)行分區(qū)之后,可以根據(jù)相應(yīng)的分區(qū)建立分區(qū)索引。
8、2、聚簇的使用Oracle提供了另一種