程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 調整Oracle應用系統性能的原則和方法

調整Oracle應用系統性能的原則和方法

編輯:Oracle數據庫基礎

摘要:通過探討和研究Oracle服務器和ClIEnt/Server的特點和原理,闡述了提高、調整Oracle應用系統性能的一些原則和方法。

關鍵詞:Oracle;客戶/服務器;系統全程區;網絡I/O;回滾段。

Oracle 數據庫廣泛應用在社會的各個領域,特別是在ClIEnt/Server模式的應用,但是應用開發者往往碰到整個系統的性能隨著數據量的增大顯著下降的問題,為了解決這個問題,從以下幾個方面:數據庫服務器、網絡I/O、應用程序等對整個系統加以調整,充分發揮Oracle的效能,提高整個系統的性能。

1 調整數據庫服務器的性能

Oracle數據庫服務器是整個系統的核心,它的性能高低直接影響整個系統的性能,為了調整Oracle數據庫服務器的性能,主要從以下幾個方面考慮:

1.1 調整操作系統以適合Oracle數據庫服務器運行

Oracle數據庫服務器很大程度上依賴於運行服務器的操作系統,如果操作系統不能提供最好性能,那麼無論如何調整,Oracle數據庫服務器也無法發揮其應有的性能。

1.1.1 為Oracle數據庫服務器規劃系統資源

據已有計算機可用資源, 規劃分配給Oracle服務器資源原則是:盡可能使Oracle服務器使用資源最大化,特別在ClIEnt/Server中盡量讓服務器上所有資源都來運行Oracle服務。

1.1.2 調整計算機系統中的內存配置

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

1.1.3 為Oracle數據庫服務器設置操作系統進程優先級

不要在操作系統中調整Oracle進程的優先級,因為在Oracle數據庫系統中,所有的後台和前台數據庫服務器進程執行的是同等重要的工作,需要同等的優先級。所以在安裝時,讓所有的數據庫服務器進程都使用缺省的優先級運行。

1.2 調整內存分配

Oracle數據庫服務器保留3個基本的內存高速緩存,分別對應3種不同類型的數據:庫高速緩存,字典高速緩存和緩沖區高速緩存。庫高速緩存和字典高速緩存一起構成共享池,共享池再加上緩沖區高速緩存便構成了系統全程區(SGA)。SGA是對數據庫數據進行快速訪問的一個系統全程區,若SGA本身需要頻繁地進行釋放、分配,則不能達到快速訪問數據的目的,因此應把SGA放在主存中,不要放在虛擬內存中。內存的調整主要是指調整組成SGA的內存結構的大小來提高系統性能,由於Oracle數據庫服務器的內存結構需求與應用密切相關,所以內存結構的調整應在磁盤I/O調整之前進行。

1.2.1 庫緩沖區的調整

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

Select sum(pins),sum(reloads) from v$librarycache;

Pins列給出SQL語句,PL/SQL塊及被訪問對象定義的總次數;Reloads列給出SQL 和PL/SQL塊的隱式分析或對象定義重裝載時在庫程序緩沖區中發生的錯誤。如果sum(pins)/sum(reloads) ≈0,則庫緩沖區的命中率合適;若sum(pins)/sum(reloads)>1, 則需調整初始化參數 shared_pool_size來重新調整分配給共享池的內存量。

1.2.2 數據字典緩沖區的調整

數據字典緩沖區包含了有關數據庫的結構、用戶、實體信息。數據字典的命中率,對系統性能影響極大。數據字典緩沖區的使用情況記錄在動態性能表v$librarycache中,可通過查詢該表來了解其活動情況,以決定如何調整。

Select sum(gets),sum(getmisses) from v$rowcache;

Gets列是對相應項請求次數的統計;Getmisses 列是引起緩沖區出錯的數據的請求次數。對於頻繁訪問的數據字典緩沖區,sum(getmisses)/sum(gets)<10%~15%。若大於此百分數,則應考慮增加數據字典緩沖區的容量,即需調整初始化參數shared_pool_size來重新調整分配給共享池的內存量。

1.2.3 緩沖區高速緩存的調整

用戶進程所存取的所有數據都是經過緩沖區高速緩存來存取,所以該部分的命中率,對性能至關重要。緩沖區高速緩存的使用情況記錄在動態性能表v$sysstat中,可通過查詢該表來了解其活動情況,以決定如何調整。

  Select name,value from v$sysstat where name in 
    ('dbblock gets','consistent gets','physical reads');

dbblock gets和consistent gets的值是請求數據緩沖區中讀的總次數。physical reads的值是請求數據時引起從盤中讀文件的次數。從緩沖區高速緩存中讀的可能性的高低稱為緩沖區的命中率,計算公式:

Hit Ratio=1-(physical reds/(dbblock gets+consistent gets))

如果Hit Ratio<60%~70%,則應增大db_block_buffers的參數值。db_block_buffers梢緣髡

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved