對'Consistent Gets',''Physical Reads'和'DB Block Gets'的理解

jolly10發表於2008-04-25
在Oracle的文件中有這樣一段解釋:

db block gets:Number of times a CURRENT block was requested.
consistent gets:Number of times a consistent read was requested for a block.
physical reads:Total number of data blocks read from disk. This number equals the value of "physical reads direct" plus all reads into buffer cache.
[@more@]

---------------------------------------------------------------針對以上3個概念進行的說明解釋及關係如下:
1、DB Block Gets(當前請求的塊數目)
當前模式塊意思就是在操作中正好提取的塊數目,而不是在一致性讀的情況下而產生的塊數。正常的情況下,一個查詢提取的塊是在查詢開始的那個時間點上存在的資料塊,當前塊是在這個時刻存在的資料塊,而不是在這個時間點之前或者之後的資料塊數目。

我的理解這部分的數目包括直接在buffer中取到的數目和 物理讀的block數目.


2、Consistent Gets(資料請求總數在回滾段Buffer中的資料一致性讀所需要的資料塊)
這裡的概念是在處理你這個操作的時候需要在一致性讀狀態上處理多少個塊,這些塊產生的主要原因是因為由於在你查詢的過程中,由於其他會話對資料塊進行操 作,而對所要查詢的塊有了修改,但是由於我們的查詢是在這些修改之前呼叫的,所以需要對回滾段中的資料塊的前映像進行查詢,以保證資料的一致性。這樣就產 生了一致性讀。

比較好理解直接在rollback中讀的block數目.

3、Physical Reads(物理讀)
就是從磁碟上讀取資料塊的數量,其產生的主要原因是:
1、 在資料庫快取記憶體中不存在這些塊
2、 全表掃描
3、 磁碟排序

物理讀的block數目.

它們三者之間的關係大致可概括為:
邏輯讀指的是Oracle從記憶體讀到的資料塊數量。一般來說是'consistent gets' + 'db block gets'。當在記憶體中找不到所需的資料塊的話就需要從磁碟中獲取,於是就產生了'phsical reads'。

求cache hit用:

SELECT SUM(DECODE(a.NAME, 'consistent gets', a.VALUE, 0)) "Consistent Gets",
SUM(DECODE(a.NAME, 'db block gets', a.VALUE, 0)) "DB Block Gets",
SUM(DECODE(a.NAME, 'physical reads', a.VALUE, 0)) "Physical Reads",
ROUND(((SUM(DECODE(a.NAME, 'consistent gets', a.VALUE, 0)) +
SUM(DECODE(a.NAME, 'db block gets', a.VALUE, 0)) -
SUM(DECODE(a.NAME, 'physical reads', a.VALUE, 0)) )/
(SUM(DECODE(a.NAME, 'consistent gets', a.VALUE, 0)) +
SUM(DECODE(a.NAME, 'db block gets', a.VALUE, 0))))
*100,2) "Hit Ratio %"
FROM v$sysstat a;

同等於:

SELECT SUM(DECODE(a.NAME, 'consistent gets', a.VALUE, 0)) "Consistent Gets",
SUM(DECODE(a.NAME, 'db block gets', a.VALUE, 0)) "DB Block Gets",
SUM(DECODE(a.NAME, 'physical reads', a.VALUE, 0)) "Physical Reads",
ROUND((1- SUM(DECODE(a.NAME, 'physical reads', a.VALUE, 0)) /(SUM(DECODE(a.NAME, 'consistent gets', a.VALUE, 0)) +
SUM(DECODE(a.NAME, 'db block gets', a.VALUE, 0))))*100,2) "Hit Ratio %" FROM v$sysstat a

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271283/viewspace-1002980/,如需轉載,請註明出處,否則將追究法律責任。

相關文章