oracle資料庫調優描述
資料庫調優方面主要包括了記憶體調優、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/70015605/viewspace-2883514/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 掌握Oracle資料庫效能調優方法Oracle資料庫
- 資料庫調優資料庫
- HBase資料庫效能調優OW資料庫
- Oracle - 資料庫的記憶體調整Oracle資料庫記憶體
- 資料庫SQL調優的幾種方式資料庫SQL
- MySQL-12.資料庫其他調優策略MySql資料庫
- 資料庫週刊47丨11月國產資料庫排行;MySQL基本知識點;Oracle效能調優筆記…資料庫MySqlOracle筆記
- 資料庫調優和資料遷移是如何影響資料庫的RY資料庫
- 資料庫效能調優之始: analyze統計資訊資料庫
- 資料庫例項效能調優利器:Performance Insights資料庫ORM
- 十分鐘初步掌握Oracle資料庫效能調優的常見場景與方法Oracle資料庫
- 【TUNE_ORACLE】Oracle資料庫與HugePages(一)HugePages概念和優勢Oracle資料庫
- Oracle效能優化-資料庫CPU使用率100%Oracle優化資料庫
- 神通資料庫測試環境調優過程資料庫
- 《MySQL 進階篇》十七:資料庫其他調優策略MySql資料庫
- 「Oracle」Oracle 資料庫安裝Oracle資料庫
- Oracle資料庫配置Oracle資料庫
- AutoTiKV:基於機器學習的資料庫調優機器學習資料庫
- 一文帶你搞懂GaussDB資料庫效能調優資料庫
- 資料庫的效能調優:如何正確的使用索引?資料庫索引
- oracle資料庫與oracle例項Oracle資料庫
- 「Oracle」Oracle資料庫基本概念Oracle資料庫
- 「Oracle」Oracle 資料庫基本概念Oracle資料庫
- Oracle資料庫-----資料庫的基本概念Oracle資料庫
- oracle 備份資料庫,匯出資料庫Oracle資料庫
- 為資料庫效能調優插上 AI 的翅膀 | 調優測試框架 Matrix 團隊訪談資料庫AI框架
- DataX將MySql資料庫資料同步到Oracle資料庫MySql資料庫Oracle
- 4.2. Oracle資料庫Oracle資料庫
- Laravel 使用 Oracle 資料庫LaravelOracle資料庫
- oracle資料庫卡頓Oracle資料庫
- Oracle資料庫閃回Oracle資料庫
- oracle資料庫資料字典應用Oracle資料庫
- sqlserver讀取oracle資料庫資料SQLServerOracle資料庫
- Oracle資料庫遷移至PolarDb(阿里雲資料庫)Oracle資料庫阿里
- 國產資料庫調研之——AntDB資料庫資料庫
- 如何對分散式 NewSQL 資料庫 TiDB 進行效能調優分散式SQL資料庫TiDB
- 「Oracle」Oracle 資料庫備份還原Oracle資料庫
- R:連結KEGG資料庫獲取更多描述資訊資料庫