db block gets 與 consistent read gets
轉: http://blog.itpub.net/26110315/viewspace-730452/
db block gets 與 consistent read gets
對這兩個概念一直模模糊糊,弄清楚這兩個概念對於理解logical reads,physical read s至關重要。
consistent read get:從buffer cache 中一致性讀取(consistent read)的block 的數量。
db block get :從buffer cache 中讀取的current mode 的block 的數量。
為了更好的理解這兩個概念我們得先來說說buffer cache 的模式。
current mode :current mode get 也叫做 db block get,從buffer cache 中檢索出來的資料塊的資料是當前模式的。
對當前模式我們可以透過下面這個列子來理解。比如一個未提交的事務,更新了一個資料塊中的兩條記錄, db block gets就
能 夠看到這些未提交的記錄(因為讀取的block是當前狀態的)。所以在insert,update,delete 的語句中能夠經常看到
db block gets。
consistent mode: consistent read gets 讀取的是讀一致性的block,因此如果需要讀取的資料所在的block 已經被修改
過了,那麼將會使用nudo data。比如一個未提交的事務更新了block 中的兩條記錄,另外一個會話請求該block 中的資料,
oracle 將會使用undo data 來提供讀一致性。
所以不能看到更新以後的資料。典型情況下,select 語句只會產生讀一致性。
擴充套件:
physical read:指定是使用磁碟IO將資料讀入data buffer cache。讀入data buffer cache 中的blocks 將會被
consistent read gets.
所以總的讀取的blocks(logical I/O)等於db block gets + consistent read gets,明白了這一點對於對於理解
buffer cache hit ratio 也很簡單了。
select 1-sum(decode(name,'physical reads',value,0))/
(sum(decode(name,'db block gets',value,0))+
sum(decode(name,'consistent gets',value,0))) "Buffer cache hit ratio"
from v$sysstat;
另外對於這個buffer cache hit ratio 不要太在意,因為這和系統當前的工作狀態有關係的。
特別是在OLAP系統中更是不要為這個hit ratio 所迷惑,因為OLAP系統的特性決定了hit ratio 不可能很高。
下面就是一個偽造hit ratio 的例子,命中率中80%提高到了98%。但是並不是說這個hit ratio 不重要關鍵是要明白當前系統
的執行狀態,系統的型別。改變解決問題的角度不是從hit ratio 入手,而是透過做其他方面的工作來提高這個hit ratio
(如果有必要的話).
SQL> select 1-sum(decode(name,'physical reads',value,0))/
2 (sum(decode(name,'db block gets',value,0))+
3 sum(decode(name,'consistent gets',value,0))) "Buffer cache hit ratio"
4 from v$sysstat;
Buffer cache hit ratio
----------------------
.804517936
SQL> ed
Wrote file afiedt.buf
1 declare
2 dum dual.dummy%type;
3 begin
4 for i in 1..1000000 loop
5 select dummy into dum
6 from dual;
7 end loop;
8* end;
SQL> /
PL/SQL procedure successfully completed.
SQL> select 1-sum(decode(name,'physical reads',value,0))/
2 (sum(decode(name,'db block gets',value,0))+
3 sum(decode(name,'consistent gets',value,0))) "Buffer cache hit ratio"
4 from v$sysstat;
Buffer cache hit ratio
----------------------
.982396189
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-2658616/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle buffer gets=db block gets+consistent getsOracleBloC
- DB Block Gets、Consistent Gets、Physical ReadsBloC
- recursive calls, db block gets,consistent gets,physical ReadsBloC
- recursive calls ,db block gets , consistent gets的含義BloC
- Consistent Gets(就是logical read)+ DB Block Gets = 所謂的Logical ReadsBloC
- 對'Consistent Gets',''Physical Reads'和'DB Block Gets'的理解BloC
- consistent gets、db block gets的簡單精闢的理解BloC
- Consistent Gets,Physical Reads和DB Block Gets的解釋(轉)BloC
- (轉)關於 db block gets,consistent gets,physical reads的概念BloC
- DB Bocks gets & Consistent gets 區別
- 對'Consistent Gets',''Physical Reads'和'DB Block Gets'的理解和解釋BloC
- DB Bocks gets,Consistent gets And Physical reads 轉載
- 關於統計中Consistent Gets,Physical Reads和DB Block Gets的意義BloC
- consistent gets
- 關於執行計劃裡recursive calls,db block gets和consistent gets引數的解釋BloC
- db block gets的解釋[轉]BloC
- 【Oracle-記憶體管理】-DB Blocks gets,Consistent gets And Physical readsOracle記憶體BloC
- consistent gets 到底指的是什麼?
- db block get和consistent read getBloC
- 淺談consistent gets的計算
- consistent gets暴漲的一種情況
- sqlplus中arrayseize引數以及consistent getsSQL
- oracle實驗記錄 (oracle consistent gets 計算)Oracle
- [20111229]Consistent gets from cache (fastpath).txtAST
- [20111228]理解consistent gets*相關資訊
- [20111229]理解consistent gets*相關資訊[補充]
- gets函式的漏洞函式
- C語言關於指標,gets()和gets_s()函式的理解C語言指標函式
- AIX: Database performance gets slower the longer the db is running_316533.1AIDatabaseORM
- gets()getchar()與緩衝區的問題
- Your Prediction Gets As Good As Your DataGo
- Why Archive, FRA Diskgroup Gets Mounted / DismountedHive
- 行欲取導致sqlplus中trace的consistent gets遠大於實際塊數SQL
- getc();fgetc();getchar();gets();fgets();
- gets函式的不安性詳解函式
- Database performance gets slower the longer the database is runningDatabaseORM
- 解決db file sequential read與db file scattered read
- OPatch failed with error code 73(OracleHomeInventory gets null oracleHomeInfo)AIErrorOracleNull