oracle資料庫調優描述(三).txt
資料庫調優方面主要包括了記憶體調優、I/O的調優、作業系統資源的管理和效能檢視相關調優幾個方面。
記憶體方面,主要關注的是cache。使系統執行塊,最通用的方法就是將用過的資料快取起來,包括sql、pl/sq、資料塊、編譯過的可直接執行的語句等。
oracle的記憶體主要是SGA和PGA兩部分,SGA的內容主要有:
shared pool包括了library cache和data dictionary cache
library cache 主要快取的是sql和pl/sql的可執行形式
data dictionary cache主要快取的是資料字典資訊
buffer cache主要快取的是查詢所需要的資料塊
large pool主要作用是處理大規模的資訊,比如做recovery manager、備份、並行語句執行、多伺服器共享等
java pool主要快取java相關類
log buffer 主要快取對資料塊的修改
以上記憶體結構都屬於SGA基本內容,即系統全域性區的元件。記憶體調優就是對這幾個部分進行大小和設定的調整。
11g中已經實現了自動記憶體管理,一般情況下,只需要告訴oracle有多少可用記憶體即可,其他的工作由oracle來完成。
手工記憶體管理模式下,才可以對各個記憶體池進行調整。
因此對於記憶體,主要是瞭解各個池的含義和作用,以及怎樣判斷其配置不合理。通常來說,進行效能診斷時ADDM報告也會給出比較合理的解決方案。但是其中給出的可能是將哪個引數增加或減少,減少到多少還是由dba的經驗判斷的。
buffer cache、shared pool分別是將以前用過的資料、語句(sql、pl/sql)存起來,當再次使用時避免物理讀增加響應時間。因此,對於一般的OLTP系統來說,池的命中率高證明快取得到了使用,硬解析少,系統效能可能更好。但也有例外。例項剛啟動等特殊情況下命中率低是正常的,會逐漸提高。
buffer cache儲存的是資料,由於記憶體優先,LRU演算法不能也無法將使用頻率很高的資料一直在記憶體中而不被aged out。通過細分,將希望保留時間長的資料放入keep池,將比希望保留在記憶體中的(太大或不經常用的)放入recycle池,(一般資料在default池),可以進一步地提高固定記憶體量的有效性。有效使用buffer cache,也就是使頻繁執行的語句避免不必要的資源消耗。
shared pool中除了library cache和data dictionary cache,選配server result cache。
由於共享伺服器、並行查詢、recover manager需要花費的記憶體量比較大,所以才建議分到large pool中。
reserve pool是預留區域,只有當記憶體不夠用時才啟用。
為保證共享池的高效,經常執行的語句可以考慮使用共享遊標,減少在多個使用者間同義詞的呼叫,用pl/sql進行日誌的查詢等工作(減少可能的硬解析、網路負擔等),快取序列值等。
伺服器程式會將buffer cache中資料塊的修改寫入到redo log buffer,再有redo log buffer通過LGWR寫入到線上重做日誌檔案中。
SGA是系統全域性區,對應地,每個使用者都有其獨有的PGA。儲存使用者獨有的資料和控制資訊。預設的大小是SGA的20%,可以通過pga_aggregate_target等引數調整。主要取決於系統功能以及使用者數量。oracle提供了很多動態檢視來監測PGA的記憶體使用,瞭解這些檢視,主要是方便發生問題時判斷是哪個使用者、會話的問題。
result caches即結果或結果對應原表的快取。server result cache是SGA的一部分,client result caches存在於client process上。兩者無依賴關係,用法比較簡單,需要注意其限制因素。通常來說,也不會有太多應用。
從i/o方面講,首要的任務就是合理、充分地利用磁碟資源,使i/o效率得到充分使用,並有一定的前瞻性。
出於安全性考慮,很多生產系統使用RAID技術;rac環境下還需要注意節點間的i/o。
oracle推薦使用oracle自動儲存管理(ASM)。優點在於條帶化、映象、線上儲存配置和動態平衡、檔案建立刪除的管理。
LVM邏輯卷管理工具及硬體條帶化有助於實現i/o平衡,如果沒有這些設定,就應該根據每個檔案的i/o要求來進行磁碟分配了。
“將表和其對應的索引分開存放可以減少i/o的說法”是沒有根據的;重做日誌檔案最好放在單獨的磁碟上,處於i/o考慮,還應避免在重做日誌檔案所在磁碟上使用RAID5技術;歸檔日誌應該放在不同的磁碟。
如果使用oracle檔案管理系統(OMF),建立檔案時不需要指定位置,提高了管理效率並自動實現i/o的優化。
在選擇資料塊的大小方面,應該根據系統的特點。主要是查詢資料的數量和是否有序兩個因素。通常決策支援系統使用大資料塊,而oltp系統使用預設或小資料塊。
儲存過程dbms_resorece_manager.calibrate_io可用於i/o校準。
而無需按照oracle,也可以使用orion工具評估磁碟的i/o效能。
作業系統的資源方面,問題分為程式管理、記憶體管理以及排程三方面。通常來說,作業系統的調優相對應用和資料庫調優作用不是很明顯。
由於併發事務間有優先順序別的問題,可以為不同的資源組分配資源。作業系統資源的優化,主要就是使優先順序高的會話得到更多資源,並較快完成,而優先順序低的可以佔用較少的並行甚至等待。
使用快取技術和允許非同步i/o,能提高i/o效率。
使用作業系統的資源管理方法可以解決很多問題,而oracle資源管理器可以作為一個補充。作業系統資源管理不同於域管理等方式,資源並不是分配給某個會話後,其他會話不能用,而是相對共享的。
影響資源分配的主要是分頁或交換分割槽、大量系統呼叫、大量程式。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26451536/viewspace-752656/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle資料庫調優描述(五).txtOracle資料庫
- oracle資料庫調優描述(二).txtOracle資料庫
- oracle資料庫調優描述(一).txtOracle資料庫
- oracle資料庫調優描述Oracle資料庫
- 掌握Oracle資料庫效能調優方法Oracle資料庫
- 資料庫調優資料庫
- 常用Oracle資料庫調優工具介紹Oracle資料庫
- Oracle資料庫 Exp/Imp工具效能調優Oracle資料庫
- [轉載]Oracle資料庫應用系統調優方法Oracle資料庫
- HBase資料庫效能調優OW資料庫
- Oracle資料庫優化Oracle資料庫優化
- oracle資料庫使用sqlldr命令匯入txt資料Oracle資料庫SQL
- 資料庫效能調優設計方案資料庫
- Oracle 資料庫引數調整Oracle資料庫
- oracle資料庫的效能調整Oracle資料庫
- Oracle資料庫效能優化Oracle資料庫優化
- 資料描述的三個領域
- AutoTiKV:基於機器學習的資料庫調優機器學習資料庫
- 資料庫SQL調優的幾種方式資料庫SQL
- HP-UX上資料庫調優(OLTP)UX資料庫
- oracle資料庫的效能調整(轉)Oracle資料庫
- 資料庫調優和資料遷移是如何影響資料庫的RY資料庫
- 建立最優的oracle資料庫Oracle資料庫
- ORACLE資料庫效能優化概述Oracle資料庫優化
- 資料庫效能調優之始: analyze統計資訊資料庫
- 新建Oracle資料庫三種方法Oracle資料庫
- 【轉】Oracle資料庫優化之資料庫磁碟I/OOracle資料庫優化
- Oracle資料庫記憶體引數調優技術的個人總結Oracle資料庫記憶體
- 【效能優化】ORACLE資料庫效能優化概述優化Oracle資料庫
- Oracle - 資料庫的記憶體調整Oracle資料庫記憶體
- Oracle資料庫資料恢復、效能優化 ASKMACLEANOracle資料庫資料恢復優化Mac
- 資料庫週刊47丨11月國產資料庫排行;MySQL基本知識點;Oracle效能調優筆記…資料庫MySqlOracle筆記
- Oracle資料庫訪問效能優化Oracle資料庫優化
- Oracle資料庫效能優化總結Oracle資料庫優化
- oracle資料庫巡檢優化-快速定位資料庫瓶頸Oracle資料庫優化
- 神通資料庫測試環境調優過程資料庫
- Oracle資料庫記憶體引數調優技術的個人總結 (2)Oracle資料庫記憶體
- Oracle資料庫記憶體引數調優技術的個人總結 (1)Oracle資料庫記憶體