我的位置: 首頁 > 學(xué)習(xí)專區(qū) > 數(shù)據(jù)庫技術(shù) > Oracle數(shù)據(jù)庫系統(tǒng)調(diào)優(yōu)方法

Oracle數(shù)據(jù)庫系統(tǒng)調(diào)優(yōu)方法

2013-07-02 08:17:39
來源:
[導(dǎo)讀] Oracle 數(shù)據(jù)庫廣泛應(yīng)用在社會的各個(gè)領(lǐng)域,特別是在Client Server模式的應(yīng)用,但是應(yīng)用開發(fā)者往往碰到整個(gè)系統(tǒng)的性能隨著數(shù)據(jù)量的增大顯著

Oracle 數(shù)據(jù)庫廣泛應(yīng)用在社會的各個(gè)領(lǐng)域,特別是在Client/Server模式的應(yīng)用,但是應(yīng)用開發(fā)者往往碰到整個(gè)系統(tǒng)的性能隨著數(shù)據(jù)量的增大顯著下降的問題,為了解決這個(gè)問題,從以下幾個(gè)方面:數(shù)據(jù)庫服務(wù)器、網(wǎng)絡(luò)I/O、應(yīng)用程序等對整個(gè)系統(tǒng)加以調(diào)整,充分發(fā)揮Oracle的效能,提高整個(gè)系統(tǒng)的性能。

1 調(diào)整數(shù)據(jù)庫服務(wù)器的性能

Oracle數(shù)據(jù)庫服務(wù)器是整個(gè)系統(tǒng)的核心,它的性能高低直接影響整個(gè)系統(tǒng)的性能,為了調(diào)整Oracle數(shù)據(jù)庫服務(wù)器的性能,主要從以下幾個(gè)方面考慮:

1.1 調(diào)整

操作系統(tǒng)以適合Oracle數(shù)據(jù)庫服務(wù)器運(yùn)行

Oracle數(shù)據(jù)庫服務(wù)器很大程度上依賴于運(yùn)行服務(wù)器的操作系統(tǒng),如果操作系統(tǒng)不能提供最好性能,那么無論如何調(diào)整,Oracle數(shù)據(jù)庫服務(wù)器也無法發(fā)揮其應(yīng)有的性能。

1.1.1 為Oracle數(shù)據(jù)庫服務(wù)器規(guī)劃系統(tǒng)資源

據(jù)已有計(jì)算機(jī)可用資源, 規(guī)劃分配給Oracle服務(wù)器資源原則是:盡可能使Oracle服務(wù)器使用資源最大化,特別在Client/Server中盡量讓服務(wù)器上所有資源都來運(yùn)行Oracle服務(wù)。

1.1.2 調(diào)整計(jì)算機(jī)系統(tǒng)中的內(nèi)存配置

多數(shù)操作系統(tǒng)都用虛存來模擬計(jì)算機(jī)上更大的內(nèi)存,它實(shí)際上是硬盤上的一定的磁盤空間。當(dāng)實(shí)際的內(nèi)存空間不能滿足應(yīng)用軟件的要求時(shí),操作系統(tǒng)就將用這部分的磁盤空間對內(nèi)存中的信息進(jìn)行頁面替換,這將引起大量的磁盤I/O操作,使整個(gè)服務(wù)器的性能下降。為了避免過多地使用虛存,應(yīng)加大計(jì)算機(jī)的內(nèi)存。

1.1.3 為Oracle數(shù)據(jù)庫服務(wù)器設(shè)置操作系統(tǒng)進(jìn)程優(yōu)先級

不要在操作系統(tǒng)中調(diào)整Oracle進(jìn)程的優(yōu)先級,因?yàn)樵贠racle數(shù)據(jù)庫系統(tǒng)中,所有的后臺和前臺數(shù)據(jù)庫服務(wù)器進(jìn)程執(zhí)行的是同等重要的工作,需要同等的優(yōu)先級。所以在安裝時(shí),讓所有的數(shù)據(jù)庫服務(wù)器進(jìn)程都使用缺省的優(yōu)先級運(yùn)行。

1.2 調(diào)整內(nèi)存分配

Oracle數(shù)據(jù)庫服務(wù)器保留3個(gè)基本的內(nèi)存高速緩存,分別對應(yīng)3種不同類型的數(shù)據(jù):庫高速緩存,字典高速緩存和緩沖區(qū)高速緩存。庫高速緩存和字典高速緩存一起構(gòu)成共享池,共享池再加上緩沖區(qū)高速緩存便構(gòu)成了系統(tǒng)全程區(qū)(SGA)。SGA是對數(shù)據(jù)庫數(shù)據(jù)進(jìn)行快速訪問的一個(gè)系統(tǒng)全程區(qū),若SGA本身需要頻繁地進(jìn)行釋放、分配,則不能達(dá)到快速訪問數(shù)據(jù)的目的,因此應(yīng)把SGA放在主存中,不要放在虛擬內(nèi)存中。內(nèi)存的調(diào)整主要是指調(diào)整組成SGA的內(nèi)存結(jié)構(gòu)的大小來提高系統(tǒng)性能,由于Oracle數(shù)據(jù)庫服務(wù)器的內(nèi)存結(jié)構(gòu)需求與應(yīng)用密切相關(guān),所以內(nèi)存結(jié)構(gòu)的調(diào)整應(yīng)在磁盤I/O調(diào)整之前進(jìn)行。

1.2.1 庫緩沖區(qū)的調(diào)整

庫緩沖區(qū)中包含私用和共享SQL和PL/SQL區(qū),通過比較庫緩沖區(qū)的命中率決定它的大小。要調(diào)整庫緩沖區(qū),必須首先了解該庫緩沖區(qū)的活動情況,庫緩沖區(qū)的活動統(tǒng)計(jì)信息保留在動態(tài)性能表v$librarycache數(shù)據(jù)字典中,可通過查詢該表來了解其活動情況,以決定如何調(diào)整。

1.2.2 數(shù)據(jù)字典緩沖區(qū)的調(diào)整

數(shù)據(jù)字典緩沖區(qū)包含了有關(guān)數(shù)據(jù)庫的結(jié)構(gòu)、用戶、實(shí)體信息。數(shù)據(jù)字典的命中率,對系統(tǒng)性能影響極大。數(shù)據(jù)字典緩沖區(qū)的使用情況記錄在動態(tài)性能表v$librarycache中,可通過查詢該表來了解其活動情況,以決定如何調(diào)整。

1.2.3 緩沖區(qū)高速緩存的調(diào)整

用戶進(jìn)程所存取的所有數(shù)據(jù)都是經(jīng)過緩沖區(qū)高速緩存來存取,所以該部分的命中率,對性能至關(guān)重要。緩沖區(qū)高速緩存的使用情況記錄在動態(tài)性能表v$sysstat中,可通過查詢該表來了解其活動情況,以決定如何調(diào)整。

2 調(diào)整 Client/Server 模式下的網(wǎng)絡(luò) I/O

Client/Server環(huán)境中的應(yīng)用處理是分布在客戶應(yīng)用程序和數(shù)據(jù)庫服務(wù)程序之間的。在 Client/Server環(huán)境中Client與Server之間的網(wǎng)絡(luò)I/O是整個(gè)系統(tǒng)性能提高的瓶頸,一個(gè)客戶應(yīng)用程序引起的網(wǎng)絡(luò)I/O越少,應(yīng)用及整個(gè)系統(tǒng)的性能越好。減少網(wǎng)絡(luò)I/O的最重要的一條原則:將應(yīng)用邏輯集中在數(shù)據(jù)庫服務(wù)器中。

2.1 使用Oracle數(shù)據(jù)庫的完整約束性

當(dāng)為應(yīng)用建表時(shí),應(yīng)當(dāng)為一些有特殊要求的數(shù)據(jù)加上適當(dāng)?shù)耐暾约s束,這樣就能實(shí)現(xiàn)由數(shù)據(jù)庫本身而不是應(yīng)用程序來約束數(shù)據(jù)符合一定的條件。數(shù)據(jù)庫服務(wù)器端的完整約束的執(zhí)行操作是在比SQL語句級別更低的系統(tǒng)機(jī)制上優(yōu)化,它與客戶端無關(guān),只在服務(wù)器中運(yùn)行,不需在Client 端和Server端之間傳遞SQL語句,有效地減輕網(wǎng)絡(luò)I/O負(fù)擔(dān)。

2.2 使用數(shù)據(jù)庫觸發(fā)器

完整約束性只能實(shí)現(xiàn)一些較簡單的數(shù)據(jù)約束條件,對一些較復(fù)雜的事物處理規(guī)則就無能為力,這時(shí)最好不要在應(yīng)用程序中實(shí)施復(fù)雜的程序控制,而是應(yīng)當(dāng)采用數(shù)據(jù)庫觸發(fā)器來實(shí)施復(fù)雜的事物規(guī)則。數(shù)據(jù)庫觸發(fā)器能實(shí)現(xiàn)由數(shù)據(jù)庫本身,而不是應(yīng)用程序,來約束數(shù)據(jù)符合復(fù)雜的事物處理規(guī)則,并且容易創(chuàng)建,便于管理,避免大量的網(wǎng)絡(luò)I/O。

2.3 使用存儲過程、存儲函數(shù)和包

Oracle的存儲過程和存儲函數(shù)是命名的能完成一定功能并且存儲在Server端的PL/SQL的集合。包是一種把有關(guān)的過程和函數(shù)組織封裝成一個(gè)數(shù)據(jù)庫程序單元的方法。它們相對于應(yīng)用程序的過程、函數(shù)而言,把SQL命令存儲在Server端。使用存儲過程和存儲函數(shù),應(yīng)用程序不必再包含多個(gè)網(wǎng)絡(luò)操作的SQL語句去執(zhí)行數(shù)據(jù)庫服務(wù)器操作,而是簡單調(diào)用存儲過程和存儲函數(shù),在網(wǎng)絡(luò)上傳輸?shù)闹皇钦{(diào)用過程的名字和輸出結(jié)果,這樣就可減少大量的網(wǎng)絡(luò)I/O。

3 應(yīng)用程序的調(diào)整

3.1 SQL語句的優(yōu)化

SQL語句的執(zhí)行速度,可以受很多因素的影響而變化。但主要的影響因素是:驅(qū)動表、執(zhí)行操作的先后順序和索引的運(yùn)用??梢杂珊芏嗖煌姆椒ㄩg接地改變這些因素,以達(dá)到最優(yōu)的執(zhí)行速度。這里主要探討當(dāng)對多個(gè)表進(jìn)行連接查詢時(shí)應(yīng)遵循的優(yōu)化原則:

3.2 建立和使用視圖、索引

利用視圖可以將基表中的列或行進(jìn)行裁減、隱藏一部分?jǐn)?shù)據(jù),并且能夠?qū)⑸婕暗蕉鄠€(gè)表的復(fù)雜查詢以視圖的方式給出,使應(yīng)用程序開發(fā)簡潔快速。利用索引可以提高查詢性能,減少磁盤 I/O,優(yōu)化對數(shù)據(jù)表的查詢,加速SQL語句的執(zhí)行。但任何時(shí)候建立索引都能提高性能,何時(shí)建立索引應(yīng)當(dāng)遵循以下原則:該表常用來在索引列上查詢,該表不常更新、插入、刪除等操作,查詢出來的結(jié)果記錄數(shù)應(yīng)控制在原表的2%~4%。

3.3 使用 Oracle 的數(shù)組接口

當(dāng)一個(gè)客戶應(yīng)用程序插入一行或用一個(gè)查詢來向服務(wù)器請求某行時(shí),不是發(fā)送具有單個(gè)行的網(wǎng)絡(luò)包,而是采用數(shù)組處理,即把要插入的多個(gè)行或檢索出的多個(gè)行緩沖在數(shù)組中,然后通過很少的幾個(gè)包就可在網(wǎng)上傳送這些數(shù)組。例如,一個(gè)給定的Select語句返回2000行數(shù)據(jù),每行平均大小為40個(gè)字節(jié),數(shù)據(jù)包的大小為4kB,而數(shù)組大小參數(shù)(arraysize)設(shè)置為20 ,則需從服務(wù)器發(fā)送100個(gè)數(shù)據(jù)包到客戶機(jī)。如果簡單地把(arraysize)設(shè)置為2000,那么同樣的操作只需要傳送 20個(gè)數(shù)據(jù)包。這樣就減少了網(wǎng)絡(luò)的傳輸量,提高了所有應(yīng)用的性能。

4 總結(jié)

我們在開發(fā)應(yīng)用程序時(shí),遵循上述的方法和原則,對系統(tǒng)進(jìn)行調(diào)整,收到了令人滿意的效果。但是應(yīng)當(dāng)指出,由于客戶機(jī)、網(wǎng)絡(luò)、服務(wù)器這3個(gè)相互依存的組成部分都必須調(diào)整和同步才能產(chǎn)生最佳的性能,因此還應(yīng)根據(jù)系統(tǒng)的具體情況,具體分析和調(diào)整。

評論
熱點(diǎn)專題
>>
相關(guān)文章推薦
>>
初中畢業(yè)學(xué)軟件開發(fā)難嗎 初中畢業(yè)學(xué)什么技術(shù)好 中專學(xué)校有哪些 中專學(xué)什么專業(yè)好 中專學(xué)什么好 中考沒考上怎么辦 中考落榜生怎么辦 怎么樣學(xué)電腦專業(yè) 中專學(xué)歷學(xué)什么好 職校學(xué)什么專業(yè)好 職業(yè)技術(shù)學(xué)校專業(yè) 職業(yè)技術(shù)學(xué)校有哪些專業(yè) 職業(yè)高中有哪些專業(yè) 職校讀什么專業(yè)好 第三屆明日之星形象代言人大賽 北大青鳥學(xué)士后培訓(xùn) 招高考落榜生的學(xué)校 怎樣學(xué)軟件專業(yè) 高中生沒考上大學(xué)學(xué)電腦怎么樣 考不上大學(xué)學(xué)什么好 高考300多分能上什么學(xué)校 考不上大學(xué)怎么辦? 籃球賽 深圳南山北大青鳥 高考志愿填報(bào) 高考落榜學(xué)什么好就業(yè) 高考落榜了怎么辦 學(xué)什么專業(yè)技術(shù)好 學(xué)什么專業(yè)好賺錢 女孩子高考落榜怎么辦 高考落榜還能上大學(xué)嗎 學(xué)什么專業(yè)最有前途 低分考生學(xué)什么好 高考低分考生怎么辦 高中生畢業(yè)后怎么樣選擇學(xué)校 高考300多分可以上什么學(xué)校 高中生選什么專業(yè)好就業(yè) 低分 高考成績不理想怎么辦 學(xué)什么專業(yè)好找工作 學(xué)什么專業(yè)工資高 學(xué)什么好專業(yè) 學(xué)什么電腦專業(yè)好 學(xué)什么電腦專業(yè) 學(xué)習(xí)什么專業(yè)有前途
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
亚洲视频免费在线观看 | 日本中文字幕在线观看全 | 在线亚洲欧美动漫一区二区 | 在线波多野结衣绝顶高潮抖动 | 新婚少妇真紧视频 | 亚洲五月综合缴情在线 |