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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- getc();fgetc();getchar();gets();fgets();
- C語言關於指標,gets()和gets_s()函式的理解C語言指標函式
- Oracle一致性讀(consistents gets)Oracle
- [20190416]檢視shared latch gets的變化.txt
- [20210208][20200426]檢視shared latch gets的變化.txt
- 緩衝區溢位漏洞那些事:C -gets函式函式
- Oracle一致性讀(Consistent Read)的原理Oracle
- 等待事件db file sequential read、db file scattered read和direct read的區別事件
- Oracle:db file scattered readOracle
- cell single block physical read等待事件BloC事件
- C/C++輸入函式 scanf() gets() getline() cin.getline() cin.get() getchar()C++函式
- db file scattered read等待事件事件
- db file sequential read等待事件事件
- 【等待事件】db file sequential read事件
- 【等待事件】db file scattered read事件
- 0316理解db file parallel read等待事件Parallel事件
- 0322理解db file parallel read等待事件2Parallel事件
- 2.6.5.1 DB_BLOCK_SIZE 初始化引數BloC
- [20210315]理解db file parallel read等待事件3.txtParallel事件
- [20210315]理解db file parallel read等待事件4.txtParallel事件
- 【TUNE_ORACLE】等待事件之IO等待“db file scattered read”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“db file sequential read”Oracle事件
- 【Mongodb】db.stats() 與 db.serverStats() 與 db.collection.stats()MongoDBServer
- consistent hash 原理,優化及實現優化
- Block深入學習,授人以漁。—— Block與各種變數BloC變數
- C語言——常用標準輸入輸出函式 scanf(), printf(), gets(), puts(), getchar(), putchar(); 字串拷貝函式 strcpy(), strncpy(), strchr(), strstr()函式用法特點C語言函式字串
- [20200309]expdp 與read only.txt
- SRAM的Write Assist與Read Assist
- mysql snapshot read快照讀及current read當前讀與鎖lock之一MySql
- mysql中read commited與repeatable read兩種隔離級別的測試MySqlMIT
- [20180905]lob與direct path read.txt
- BlockBloC
- Block學習①--block的本質BloC
- Unused Block Compression和Null Block CompressionBloCNull
- [20180823]IMU與db link.txt
- DB的備份與恢復
- while read line 與for迴圈的區別While
- __block使用BloC