調整緩衝區快取記憶體(Buffer Cache)的效能(1)
Buffer cache由資料塊組成。
1. Buffer cache的工作原理
LRU列表:MRU ………………. LRU。(全表掃描FTS放在LRU端。)
緩衝區塊的狀態:Free、Pinned、Clean、Dirty。
Dirty List或Write List(寫列表)。
資料庫寫程式DBW0將緩衝區快取記憶體中的資料寫到資料檔案中。
2.測量Buffer cache的效能
測量Buffer cache的命中率:
SQL> select 1-((physical.value – direct.value – lobs.value)/logical.value) “Buffer Cache Hit Ratio” from V$SYSSTAT physical, V$SYSSTAT direct,
V$SYSSTAT lobs, V$SYSSTAT logical where physical.name = ‘physical reads’
And direct.name = ‘physical reads direct’ and
lobs.name = ‘physical reads direct (lob)’
And logical.name = ‘session logical reads’;
“Buffer Cache Hit Ratio”的值要 > 90%。
使用STATSPACK來監視Buffer cache。
使用REPORT.TXT來監視Buffer cache。
非命中率指標:Free Buffer Inspected、Free Buffer Waits、Buffer Busy Waits。(V$sysstat)
使用Performance Manager(資料庫例程)來監視Buffer Cache。
3. 提高緩衝區快取記憶體效能的方法
加大Buffer Cache的大小:init.ora引數DB_CACHE_SIZE(動態引數)。
使用Buffer Cache Advisory功能決定Buffer Cache的大小:
首先將init.ora引數DB_CACHE_ADVICE設成ON,然後查詢V$DB_CACHE_ADVICE。
使用多個緩衝區池:
Keep Pool: DB_KEEP_CACHE_SIZE
Recycle Pool:DB_RECYCLE_CACHE_SIZE
Default Pool: DB_CACHE_SIZE
在記憶體中快取表: 表的CACHE選項,對最佳化小表的全表掃描。
正確建立索引。
4.調整Large Pool和JAVA POOL
Large Pool用於共享伺服器、RMAN、並行查詢、DBWR的從屬程式。
Large Pool的大小透過init.ora引數Large_pool_size設定。預設為8M。
從V$sgastat中監視free memory的值:
SQL>SELECT name,bytes FROM V$sgastat WHERE pool = ‘large pool’;
JAVA_POOL池的預設大小為32M。對於大型Java應用程式,JAVA_POOL池的大小應大於50M。
init.ora引數java_pool_size
從V$sgastat中監視free memory的值。
SQL>SELECT name,bytes FROM V$sgastat WHERE pool = ‘java pool’;
調整重做有關的效能
Oracle重做有關的元件包括:Redo Log Buffer、Online Redo Log、LGWR、Archive Log、Checkpoint、Arch0。
1. 監視Redo Log Buffer的效能
Redo Log Buffer不採用LRU(Least Recently Used)演算法管理。
當下列事件發生時,Redo Log Buffer的內容存檔:
Commit時、每3秒、空間使用1/3、達到1M、檢查點。
如果寫入Redo Log Buffer的速度超過LGWR存檔的速度,就會因等待而降低效能。
監視Redo Log Buffer的重試率(<1%)。
Select retries.value/entries.value “Redo Log Buffer Retry Ratio”
From V$sysstat retries, V$sysstat entries
Where retries.name = ‘redo buffer allocation retries’
And entries.name = ‘redo entries’;
“Redo Log Buffer Retry Ratio”的值要 < 1%。
Select name,value from V$sysstat where name=’redo log space requests’;
如果該值大,需要增加Redo Log Buffer。
2. 提高Redo Log Buffer的效能
增加Redo Log Buffer的大小:init.ora引數log_buffer。
減小重做日誌的生成量。(如果設定表的NOLOGGING屬性,下列操作不記錄在Online Redo Log中:用SQL* Loader的直接路徑載入。
NOLOGGING屬性還可用於下列SQL語句:CREATE TABLE AS SELECT、CREATE INDEX、
ALTER INDEX REBUILD、CREATE TABELSPACE)。
3. 調整檢查點程式的效能
測量檢查點程式的效能:沒有完成的檢查點程式的次數。
select * from V$system_event;
兩個事件:checkpoint completed、log file switch(checkpoint incomplete)。
Select * from V$sysstat。
background checkpoints started和background checkpoints completed。
使用Alert日誌來記錄檢查點程式:init.ora引數log_checkpoint_to_alert。
使用Performance Manager來測量檢查點程式的效能:I/O中的平均灰資料佇列長度(如果為0,說明檢查點太頻繁)。
建議調整online redo log的大小,使檢查點程式每20-30分鐘執行一次。
4. 調整聯機重做日誌檔案
使用V$system_event來監視聯機重做日誌檔案的效能:
log file parallel write、log file switch completed。
調整聯機重做日誌檔案的方法:與資料檔案、控制檔案、歸檔日誌檔案分開,放在原始裝置上。
5. 調整歸檔效能
檢查歸檔程式的效能:透過V$system_event中的log file switch(archiving needed)事件。
檢查每個歸檔程式的狀態:V$archive_processes。
建立多個歸檔程式:init.ora引數LOG_ARCHIVE_MAX_PROCESSES(預設為2)。[@more@]
1. Buffer cache的工作原理
LRU列表:MRU ………………. LRU。(全表掃描FTS放在LRU端。)
緩衝區塊的狀態:Free、Pinned、Clean、Dirty。
Dirty List或Write List(寫列表)。
資料庫寫程式DBW0將緩衝區快取記憶體中的資料寫到資料檔案中。
2.測量Buffer cache的效能
測量Buffer cache的命中率:
SQL> select 1-((physical.value – direct.value – lobs.value)/logical.value) “Buffer Cache Hit Ratio” from V$SYSSTAT physical, V$SYSSTAT direct,
V$SYSSTAT lobs, V$SYSSTAT logical where physical.name = ‘physical reads’
And direct.name = ‘physical reads direct’ and
lobs.name = ‘physical reads direct (lob)’
And logical.name = ‘session logical reads’;
“Buffer Cache Hit Ratio”的值要 > 90%。
使用STATSPACK來監視Buffer cache。
使用REPORT.TXT來監視Buffer cache。
非命中率指標:Free Buffer Inspected、Free Buffer Waits、Buffer Busy Waits。(V$sysstat)
使用Performance Manager(資料庫例程)來監視Buffer Cache。
3. 提高緩衝區快取記憶體效能的方法
加大Buffer Cache的大小:init.ora引數DB_CACHE_SIZE(動態引數)。
使用Buffer Cache Advisory功能決定Buffer Cache的大小:
首先將init.ora引數DB_CACHE_ADVICE設成ON,然後查詢V$DB_CACHE_ADVICE。
使用多個緩衝區池:
Keep Pool: DB_KEEP_CACHE_SIZE
Recycle Pool:DB_RECYCLE_CACHE_SIZE
Default Pool: DB_CACHE_SIZE
在記憶體中快取表: 表的CACHE選項,對最佳化小表的全表掃描。
正確建立索引。
4.調整Large Pool和JAVA POOL
Large Pool用於共享伺服器、RMAN、並行查詢、DBWR的從屬程式。
Large Pool的大小透過init.ora引數Large_pool_size設定。預設為8M。
從V$sgastat中監視free memory的值:
SQL>SELECT name,bytes FROM V$sgastat WHERE pool = ‘large pool’;
JAVA_POOL池的預設大小為32M。對於大型Java應用程式,JAVA_POOL池的大小應大於50M。
init.ora引數java_pool_size
從V$sgastat中監視free memory的值。
SQL>SELECT name,bytes FROM V$sgastat WHERE pool = ‘java pool’;
調整重做有關的效能
Oracle重做有關的元件包括:Redo Log Buffer、Online Redo Log、LGWR、Archive Log、Checkpoint、Arch0。
1. 監視Redo Log Buffer的效能
Redo Log Buffer不採用LRU(Least Recently Used)演算法管理。
當下列事件發生時,Redo Log Buffer的內容存檔:
Commit時、每3秒、空間使用1/3、達到1M、檢查點。
如果寫入Redo Log Buffer的速度超過LGWR存檔的速度,就會因等待而降低效能。
監視Redo Log Buffer的重試率(<1%)。
Select retries.value/entries.value “Redo Log Buffer Retry Ratio”
From V$sysstat retries, V$sysstat entries
Where retries.name = ‘redo buffer allocation retries’
And entries.name = ‘redo entries’;
“Redo Log Buffer Retry Ratio”的值要 < 1%。
Select name,value from V$sysstat where name=’redo log space requests’;
如果該值大,需要增加Redo Log Buffer。
2. 提高Redo Log Buffer的效能
增加Redo Log Buffer的大小:init.ora引數log_buffer。
減小重做日誌的生成量。(如果設定表的NOLOGGING屬性,下列操作不記錄在Online Redo Log中:用SQL* Loader的直接路徑載入。
NOLOGGING屬性還可用於下列SQL語句:CREATE TABLE AS SELECT、CREATE INDEX、
ALTER INDEX REBUILD、CREATE TABELSPACE)。
3. 調整檢查點程式的效能
測量檢查點程式的效能:沒有完成的檢查點程式的次數。
select * from V$system_event;
兩個事件:checkpoint completed、log file switch(checkpoint incomplete)。
Select * from V$sysstat。
background checkpoints started和background checkpoints completed。
使用Alert日誌來記錄檢查點程式:init.ora引數log_checkpoint_to_alert。
使用Performance Manager來測量檢查點程式的效能:I/O中的平均灰資料佇列長度(如果為0,說明檢查點太頻繁)。
建議調整online redo log的大小,使檢查點程式每20-30分鐘執行一次。
4. 調整聯機重做日誌檔案
使用V$system_event來監視聯機重做日誌檔案的效能:
log file parallel write、log file switch completed。
調整聯機重做日誌檔案的方法:與資料檔案、控制檔案、歸檔日誌檔案分開,放在原始裝置上。
5. 調整歸檔效能
檢查歸檔程式的效能:透過V$system_event中的log file switch(archiving needed)事件。
檢查每個歸檔程式的狀態:V$archive_processes。
建立多個歸檔程式:init.ora引數LOG_ARCHIVE_MAX_PROCESSES(預設為2)。[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18921899/viewspace-1017385/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 調整緩衝區快取記憶體(Buffer Cache)的效能(轉)快取記憶體
- 調整緩衝區快取記憶體(Buffer Cache)的效能(2)快取記憶體
- 調整緩衝區快取記憶體(Buffer Cache)的效能(3)快取記憶體
- Oracle調整緩衝區快取記憶體Oracle快取記憶體
- Oracle效能最佳化調整--調整緩衝區快取記憶體Oracle快取記憶體
- Buffer Cache(緩衝區快取)篇:keep pool(保留池)快取
- Buffer Cache Size(資料緩衝區)
- RMAN的IO記憶體緩衝區記憶體
- buffer cache深度分析及效能調整(五)
- buffer cache深度分析及效能調整(六)
- buffer cache深度分析及效能調整(四)
- 記憶體緩衝區研究----第一課記憶體
- 讀書筆記-高階owi與oracle效能調整-cache buffer筆記Oracle
- Buffer Cache的記憶體結構記憶體
- 快取與緩衝快取
- Node.js Buffer(緩衝區)Node.js
- log buffer(日誌緩衝區)
- Java NIO 之 Buffer(緩衝區)Java
- Linux記憶體、Swap、Cache、BufferLinux記憶體
- Java整數緩衝區Java
- Buffer cache 的調整與優化(二)優化
- Buffer cache 的調整與優化(一)優化
- 調節Oracle資料緩衝區引數,緩衝整個資料庫(轉)Oracle資料庫
- Java-NIO之Buffer(緩衝區)Java
- 8、Node.js Buffer(緩衝區)Node.js
- node.js中緩衝區–BufferNode.js
- 記憶體中,cache與buffer的含義記憶體
- buffer cache實驗1-記憶體結構圖解記憶體圖解
- 高效能記憶體快取 ristretto記憶體快取
- Oracle中Buffer Cache記憶體結構Oracle記憶體
- Linux記憶體管理機制中buffer和cache的區別Linux記憶體
- Java NIO -- 緩衝區(Buffer)的資料存取Java
- MySQL中讀頁緩衝區buffer poolMySql
- 11g result cache 結果快取記憶體快取記憶體
- Linux作業系統中記憶體buffer和cache的區別Linux作業系統記憶體
- Nio再學習之NIO的buffer緩衝區
- Cache和Buffer都是快取,有什麼區別?Linux快取Linux
- weblogic 記憶體調整Web記憶體