熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle學習應用之數據庫性能優化策略

2013-11-13 22:19:24  來源: Oracle 

  數據庫系統和操作系統一樣在計算機上安裝成功後還需要進一步配置和優化從而使其具有更強大的功能和運行在最佳狀態如果在設計階段因為各種因素沒有進行較為合理的配置和計劃那麼就需要在後期對數據庫系統進行優化
  
  數據庫系統性能的優化除了在設計階段對其邏輯存儲結構和物理存儲結構設計進行優化使之在滿足需求條件下時空開銷性能最佳外還可在運行階段采取一些優化措施使系統性能最佳本專題所討論的性能優化主要指運行階段的性能優化即討論如何使用Oracle所提供的優化手段來提高系統性能大多數性能問題並不是一種孤立的症狀而是系統設計的結果因此性能優化就集中在那些導致不可接受特征的同一的固定的和潛在的問題上優化是數據庫設計中計劃設計監視優化四大步驟的最後一步 除了用Oracle優化器來優化數據庫的性能外DBA還可通過優化Oracle的參數設置等手段來優化數據庫的性能對參數的細微優化便能影響系統整體性能
  
  為了有目的優化系統性能首先應明確優化目標然後再根據目標優化各種初始參數的設置以達到更好效果可有如下幾個優化目標:
  
  ◆ 應用程序設計的優化
  
  ◆ 指定類型SQL語句的優化
  
  ◆ 內存使用的優化
  
  ◆ 數據存儲物理存儲和邏輯存儲的優化
  
  ◆ 網絡通信量的優化
  
  DBA可選定上述一個或多個目標來實施優化性能優化主要是通過優化初始化參數來實現本專題從以下幾個方面來談談如何優化Oracle數據庫使其具有最佳性能
  
  ()優化初始參數
  
  ()優化內存
  
  ()優化I/O
  
  ()優化資源爭用
  
  ()其它參數優化
  
  可變參數的優化
  
  在對Oracle數據庫進行優化時需要用到許多的參數其中有一部分參數對系統性能影響較大這部分參數叫可變參數可變參數按其作用可以分為兩大類一大類是起限制作用的如OPEN_CURSORS;另一大類是影響系統性能的如DB_BLOCK_BUFFERS
  
  在進行數據庫系統性能優化時需要熟練掌握和了解一些可變參數本文討論了一些對系統性能有較大影響的參數
  
  限制類可變參數
  
  ()DML_LOCKS
  
  該參數表明多少個用戶可同時能修改多少張表例如:有三個用戶同時修改二張表則要求表上的總數為若置為則組織隊列不起作用其性能會稍有提高使用該參數時不能用DROP TABLECREATE INDEX或顯式封鎖
  
  ()LICENSE_MAX_SESSION
  
  該參數指出允許並發用戶會話的最大數若此參數為則不能實施並發若並發的用戶會話數已達到此極限則只有具有RESTRICTED SESSION權限的用戶才能連接到服務器
  
  ()LICENSE_MAX_USERS
  
  該參數指出在一個數據庫上可建立的最大用戶數當達到最大值時便不能再建新用戶可改變此值以放松限制在LICENSE_MAX_SESSION或LICENSE_MAX_USER為則並發會話或任何用戶都不能用若對不同的實例此參數不同時則以第一個登錄的數據庫實例的參數為准
  
  ()MAX_DUMP_FILE_SIZE
  
  該參數指定操作系統中寫跟蹤文件的塊的最大值可用此值來限制跟蹤文件的空間
  
  ()OPEN_CURSORS
  
  該參數指明一個用戶進程能同時打開光標的最大數它能限制每個用戶進程占用的內存空間量
  
  ()OPEN_LINKS
  
  該參數指定並發連接到遠程數據庫的最大用戶進程數若同時引用多個數據庫則應該增大該值例如:同時交替訪問AB和C三個數據庫時若OPEN_LINKS設置為則需花費等待連接時間此參數只用於分布事務若該參數設置為則不允許進行分布事務處理
  
  ()PROCESS
  
  該參數指定同時連接到Oracle服務器上的最大用戶進程數該參數值包括個後台進程和一個登錄因此該參數值為則只能有個並發用戶連接到服務器
  
  ()ROW_LOCKING
  
  該參數指定行封鎖方式若設置為ALWAYS則在修改表時只實施行封鎖若設置為INTENT則行封鎖只適用於SELECT FOR UPDATE而在修改時實施表封鎖
  
  影響系統性能類可變參數
  
  ()CHECKPOINT_PROCESS
  
  該參數根據是否要求檢查點而設置成TRUE或者FALSE當所有緩沖區的信息寫到磁盤時檢查點進程(CHPT)建立一個靜態的點在歸檔日志文件中做一個記號表示有一個檢查點發生檢查點發生在歸檔日志轉換的時候或當達到log_checkpoint_interval定義的塊數的時候當設置此參數為TRUE時後台進程CHPT便可工作在檢查點期間內若日志寫進程(LGWR)的性能減低則可用CHPT進程加以改善
  
  ()DB_BLOCK_CHECKPOINT_BATCH
  
  該參數的值設置得較大時可加速檢查點的完成當指定的值比參數DB_BLOCK_CHECKPOINT_BATCH大時其效果和指定最大值相同
  
  ()DB_BLOCK_BUFFERS
  
  該參數是在SGA中可作緩沖用的數據庫塊數該參數決定SGA的大小對數據庫性能具有決定性因素若取較大的值則可減少I/O次數但要求內存空間較大每個緩沖區的大小由參數DB_BLOCK_SIZE決定
  
  ()DB_BLOCK_SIZE
  
  該參數表示Oracle數據庫塊的大小以字節為單位典型值為該值一旦設定則不能改變它影響表及索引的FREELISTS參數的最大值
  
  ()DB_FILES
  
  該參數為數據庫運行時可打開的數據文件最大數目
  
  ()DB_FILE_MULTIBLOCK_READ_COUNT
  
  該參數表示在順序掃描時一次I/O操作可讀的最大塊數該最大塊數取決於操作系統其值在或者是比較好
  
  ()DSCRETE_TRANSACTION_ENABLED
  
  該參數實現一個更簡單更快的回滾機制以改進某些事務類型的性能 當設置為TRUE時可改善某些類型的事務性能
  
  ()LOG_ARCHIVE_BUFFER_SIZE
  
  此參數的值依賴於操作系統它與LOG_ARCHIVE_BUFFER 參數一起用於調整有歸檔日志的運行使其運行速度盡量加快但不能快到降低性能僅當直接歸檔到磁帶設備時才需要增加這些參數的值重做日志緩沖區要等待歸檔日志緩沖區變得可用
  
  () LOG_ARCHIVE_BUFFER
  
  該參數指定用於歸檔的日志時的緩沖區數
  
  () LOG_BUFFER
  
  該參數指明分配給SGA中的日志緩沖區的字節數該參數值較大時可減少日志I/O的次數對於繁忙的系統不宜采用大於或等於K的值缺省值—般為數據庫塊的
  
  ()LOG_CHECKPOINT_TIMEOUT
  
  該參數指明兩個檢查點之間的時間間隔若指定為則說明不允許進行基於時間的檢查點
  
  ()LOG_CHECKPOINT_INTERVAL
  
  該參數用來確定檢查點進程的執行頻率這個數值設置成取檢查點之前處理的重做緩沖區塊的數量
  
  ()LOG_FILES
  
  該參數指定運行期間數據庫可打開的日志文件數若需要較大的SGA空間而不需多個日志文件則可減少該值
  
  ()LOG_SIMULTANEOUS_COPIES
  
  該參數是日志緩沖區副本闩鎖的最大數為同時寫日志項所用為提高性能可設置此參數為兩倍的CPU數對單進程系統該值多數設置為此時斷開闩鎖
  
  ()LOG_SMALL_ENTRY_MAX_SIZE
  
  該參數與LOG_SIMULTANEOUS_COPIES參數配合使用若日志項大於此項則在給緩沖區分配空間並獲得日志復制闩鎖之後用戶進程釋放日志復制闩鎖
  
  ()OPTIMIZRER_MODE
  
  若該參數的值為RULE則ORACLE優化器選擇基於規則的優化;若設置為COST並且在數據字典中存在有統計信息則優化器選擇基於代價的優化方法進行優化
  
  ()SEQUENCE_CACHE_ENTRIES
  
  該參數指明在SGA中可進行高速緩存的序列數用於直接存取該高速緩存區是基於最近最少使用(LRU)的算法進行管理的若此值設置得較高則可達到較高的並發性
  
  ()SEQUENCE_CACHE_HASH_BUCKETS
  
  該參數用於加速查看高速緩沖區最近請求的最新序列的桶式地址數每個桶式地址占個字節高速緩沖區以散列表排列該參數應為質數
  
  ()SERIALIZEABLE
  
  此參數用於保證重復讀的一致性當它設置為TRUE時查詢可保證表級讀一致以防止在此查詢提交之前的修改
  
  ()SHARED_POOL_SIZE
  
  該參數指定共享池的大小其中包括共享光標及存儲過程在多用戶系統中較大的SHARED_POOL_SIZE值可改善SQL語句的執行性能但較小的值可節省內存
  
  ()SMALL_TABLE_THRESHOLD
  
  該參數決定SGA中用於掃描的緩沖區的數目若表的數目小於該值則該表可整個地讀入高速緩存區若表大於該值則立即重用該緩沖區一般用缺省值可使性能最好
  
  ()SORT_AREA_TETAINED_SIZE
  
  這是會話內存的最大數量用於內存排序當從排序空間提出最後—行時便釋放該內存若排序要較大的內存則分配一臨時段排序便可在盤上進行用於排序的最大總量可由SORT_AREA_SIZE指定而不用此參數可以分配同樣大小的多個排序空間不過一般對於復雜的查詢才需要
  
  () SORT_AREA_SIZE
  
  該參數用於指定進行外排序(磁盤)時所需PGA內存的最大數量以字節為單位當排序行寫入磁盤時
From:http://tw.wingwit.com/Article/program/Oracle/201311/18769.html
  • 上一篇文章:

  • 下一篇文章:
  • Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.