摘要:通過**和研究oracle伺服器和client/server的特點和原理,闡述了提高、調整oracle應用系統效能的一些原則和方法。
oracle 資料庫廣泛應用在社會的各個領域,特別是在client/server模式的應用,但是應用開發者往往碰到整個系統的效能隨著資料量的增大顯著下降的問 題,為了解決這個問題,從以下幾個方面:資料庫伺服器、網路i/o、應用程式等對整個系統加以調整,充分發揮oracle的效能,提高整個系統的效能。 ---www.bianceng.cn
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 indbblock gets和consistent gets的值是請求資料緩衝區中讀的總次數。physical reads的值是請求資料時引起從盤中讀檔案的次數。從緩衝區快取記憶體中讀的可能性的高低稱為緩衝區的命中率,計算公式:
hit ratio=1-(physical reds/(dbblock gets+consistent gets))
如果hit ratio<60%~70%,則應增大db_block_buffers的引數值。db_block_buffers梢緣髡
('dbblock gets','consistent gets','physical reads');
優化系統效能
程式框架 hibernate3 struts2 spring2 資料庫 sqlserver2008 伺服器 tomcat6 優化方法 1 配置連線池 採用的c3p0連線池 2 在程式中獲取列表時,用iterator代替list 3 在查詢之後可以使用session.clear 方法釋放快取 4 用資...
系統效能分析
當系統變慢時候,我們首先關注的可能是cpu的指標,有時候發現cpu使用率一點都不高,但是系統還是卡,這時可能就需要關心另外乙個影響效能的東西 磁碟的io效能。通過top命令中的 wa可以獲取系統當前的io狀態,如果該值居高不小,那磁碟的io可能就有問題了。另外可以通過iotop命令來詳細了解什麼程式...
系統效能分析
系統的整體效能取決於各種資源的平衡,類似木桶理論,某種資源的耗盡會嚴重阻礙系統的效能。linux中需要監控的資源主要有 cpu 主存 記憶體 硬碟空間 i o時間 網路時間 應用程式等。統效能的主要因素有 因素 說明使用者態cpu cpu在使用者態執行使用者程式所花費的時間,包括庫呼叫,但是不包括核...