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

Oracle 優化和性能調整

編輯:關於Oracle數據庫

  為了保證Oracle數據庫運行在最佳的性能狀態下,在信息系統開發之前就應該考慮數據庫的優化策略。優化策略一般包括服務器操作系統參數調整、數據庫參數調整、網絡性能調整、應用程序SQL語句分析及設計等幾個方面,其中應用程序的分析與設計是在信息系統開發之前完成的。

  分析評價Oracle數據庫性能主要有數據庫吞吐量、數據庫用戶響應時間兩項指標。數據庫用戶響應時間又可以分為系統服務時間和用戶等待時間兩項,即:

  數據庫用戶響應時間=系統服務時間+用戶等待時間

  因此,獲得滿意的用戶響應時間有兩個途徑:一是減少系統服務時間,即提高數據庫的吞吐量;二是減少用戶等待時間,即減少用戶訪問同一數據庫資源的沖突率。

  數據庫性能優化包括如下幾個部分:

調整數據結構的設計 這一部分在開發信息系統之前完成,程序員需要考慮是否使用Oracle數據庫的分區功能,對於經常訪問的數據庫表是否需要建立索引等。
調整應用程序結構設計 這一部分也是在開發信息系統之前完成的。程序員在這一步需要考慮應用程序使用什麼樣的體系結構,是使用傳統的Client/Server兩層體系結構,還是使用Browser/Web/Database的三層體系結構。不同的應用程序體系結構要求的數據庫資源是不同的。
調整數據庫SQL語句 應用程序的執行最終將歸結為數據庫中的SQL語句執行,因此SQL語句的執行效率最終決定了Oracle數據庫的性能。 Oracle公司推薦使用Oracle語句優化器(Oracle Optimizer)和行鎖管理器(Row-Level Manager)來調整優化SQL語句。
調整服務器內存分配 內存分配是在信息系統運行過程中優化配置的。數據庫管理員根據數據庫的運行狀況不僅可以調整數據庫系統全局區(SGA區)的數據緩沖區、日志緩沖區和共享池的大小,而且還可以調整程序全局區(PGA區)的大小。
調整硬盤I/O 這一步是在信息系統開發之前完成的。數據庫管理員可以將組成同一個表空間的數據文件放在不同的硬盤上,做到硬盤之間I/O 負載均衡。
調整操作系統參數 例如:運行在Unix操作系統上的 Oracle數據庫,可以調整Unix數據緩沖區的大小、每個進程所能使用的內存大小等參數。
  實際上,上述數據庫優化措施之間是相互聯系的。Oracle 數據庫性能惡化的表現基本上都是用戶響應時間比較長,需要用戶長時間的等待。而性能惡化的原因卻是多種多樣的,有時是多個因素共同造成了性能惡化的結果,這就需要數據庫管理員有比較全面的計算機知識,能夠敏感地察覺到影響數據庫性能的主要原因所在。另外,良好的數據庫管理工具對於優化數據庫性能也是很重要的。

Oracle數據庫常用的數據庫性能優化工具有:

Oracle數據庫在線數據字典 Oracle在線數據字典能夠反映出Oracle的動態運行情況,對於調整數據庫性能是很有幫助的。
操作系統工具 例如使用Unix操作系統的Vmstat、 Iostat等命令可以查看到系統級內存和硬盤I/O的使用情況,這些工具能夠幫助管理員弄清楚系統瓶頸出現在什麼地方。
SQL語言跟蹤工具可以記錄SQL語句的執行情況,管理員可以使用虛擬表來調整實例,並使用SQL語句跟蹤文件調整應用程序性能。SQL語言跟蹤工具將結果輸出成一個操作系統的文件,管理員可以使用TKPROF工具查看這些文件。
Oracle Enterprise Manager(OEM) 這是一個圖形的用戶管理界面,用戶可以使用它方便地進行數據庫管理而不必記住復雜的Oracle數據庫管理的命令。
Explain Plan——SQL語言優化命令 使用這個命令可以幫助程序員寫出高效的SQL語言。
系統性能評估

信息系統的類型不同,需要關注的數據庫參數也是不同的。數據庫管理員需要根據自己的信息系統類型來著重考慮不同的數據庫參數。

在線事務處理信息系統(OLTP) 這種類型的信息系統一般需要有大量的Insert、Update操作,典型的系統包括民航機票發售系統、銀行儲蓄系統等。OLTP系統需要保證數據庫的並發性、可靠性和最終用戶的速度,這類系統使用的Oracle數據庫需主要考慮以下參數:
數據庫回滾段是否足夠?
是否需要建立Oracle數據庫索引、聚集、散列?
系統全局區(SGA)大小是否足夠?
SQL語句是否高效?
數據倉庫系統(Data Warehousing) 這種信息系統的主要任務是從Oracle的海量數據中進行查詢,以得到數據之間的某些規律。數據庫管理員需要為這種類型的Oracle數據庫著重考慮下述參數:
是否采用B*索引或者Bitmap索引?
是否采用並行SQL查詢以提高查詢效率?
是否采用PL/SQL函數編寫存儲過程?
有必要的話,需要建立並行數據庫以提高數據庫的查詢效率。
參數的調整

CPU參數

CPU是服務器的一項重要資源,服務器良好的工作狀態表現為在工作高峰時CPU的使用率高於90%。如果空閒時間CPU使用率就在90%以上,說明服務器缺乏CPU資源;如果工作高峰時CPU使用率仍然很低,則說明服務器CPU 資源還比較充足。
使用操作命令可以看到CPU的使用情況,一般Unix操作系統的服務器,可以使用sar-u命令查看CPU的使用率;NT操作系統的服務器,可以使用NT的性能管理器來查看CPU的使用率。
數據庫管理員可以通過查看v$sysstat數據字典中的 “CPU used by this session”統計項得知Oracle數據庫使用的CPU時間;查看“OS User level CPU time”統計項得知操作系統用戶狀態下的CPU時間;查看“OS System call CPU time” 統計項得知操作系統系統狀態下的CPU時間,操作系統總的CPU時間就是用戶狀態和系統狀態時間之和。如果Oracle數據庫使用的CPU時間占操作系統總CPU時間的90%以上,就說明服務器CPU基本上被Oracle數據庫使用著,這是合理的,反之,則說明服務器CPU被其他程序占用過多,Oracle數據庫無法得到更多的CPU時間。
內存參數

----內存參數的調整主要是指Oracle數據庫的系統全局區(SGA)的調整。SGA主要由3部分構成:共享池、數據緩沖區、日志緩沖區。

----共享池由兩部分構成:共享SQL區和數據字典緩沖區。共享SQL區是存放用戶SQL命令的區域,數據字典緩沖區則存放數據庫運行的動態信息。

結束語

----Oracle數據庫的性能優化調整是一個系統工程,涉及的方面很多。數據庫管理員需要綜合運用上面介紹的規律,認真分析Oracle在運行過程當中出現的各種問題,以保證Oracle數據庫運行的高效率。還需要指出的是,上面給出的語句只是測得Oracle運行過程的某一個時間點的情況,數據庫管理員不能僅僅根據一個點的情況就斷定數據庫運行性能的好壞,只有多運行一些時間點才能對數據庫運行狀況做出一個綜合評估。

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