consistent gets
一致讀次數,不是block數。
在處理這個操作的時候需要在一致性讀狀態上處理多少個塊,這些塊產生的主要原因是因為由於在你查詢的過
程中,由於其他會話對資料塊進行操作,而對所要查詢的塊有了修改,但是由於我們的查詢是在這些修改之前調
用的,所以需要對回滾段中的資料塊的前映像進行查詢,以保證資料的一致性。這樣就產生了一致性讀.
--------------------------------------------
查詢時涉及的每一block都是Consistent Read, 只是有些CR(Consistent Read)需要使用undo 來進行構造(這就是上
面第一段話的這種情形), 大部分CR(Consistent Read)並不涉及到undo block的讀..
還有就是每次讀這個block都是一次CR(可能每個block上有多個資料row), 也就是如果某個block被讀了10次, 系統會
記錄10個Consistent Read. 這也是為什麼讀的資料量大的時候index查詢比較全表掃描慢的一個重要原因.
--------------------------------------------
Consistent Read與update等沒有直接關係。dml對block作變更產生current Read. 直接放到dirty list上等待dbwr寫..
如果dml的時間很長的話,,可能會直接寫到資料檔案(即使沒有提交), 如果最後commit的話, 就不會再將這個block讀出
清理itl資訊, rollback的話需要將這個block讀出恢復變更前的資訊, 再回滾..
---------------------------------------------
SQL Trace 最佳化SQL的時候注意,邏輯讀固然重要,但還要看物理讀, 排序等操作...
---------------------------------------------
不必考慮物理讀,它本身就是邏輯讀的一部分,對於所有的sql,除了第一次之外,之後的讀取都是公平的。
第二個顯然處理的資料要多於第一個,並且有2次排序。
為了準確,可以用10046 trace一下看看。
sql> alter session set event '10046 trace name context forever';
然後到udump下找trace檔案
tkprof tracefile 。
===============================================
對'Consistent Gets',''Physical Reads'和'DB Block Gets'的理解
===========================================================
作者: jolly10(http://jolly10.itpub.net)
發表於:2008.04.25 17:29
分類: linux學習筆記
出處:http://jolly10.itpub.net/post/7268/460574
---------------------------------------------------------------
在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.
---------------------------------------------------------------針對以上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/35489/viewspace-430027/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle buffer gets=db block gets+consistent getsOracleBloC
- DB Bocks gets & Consistent gets 區別
- db block gets 與 consistent read getsBloC
- DB Block Gets、Consistent Gets、Physical ReadsBloC
- recursive calls, db block gets,consistent gets,physical ReadsBloC
- recursive calls ,db block gets , consistent gets的含義BloC
- DB Bocks gets,Consistent gets And Physical reads 轉載
- consistent gets 到底指的是什麼?
- 對'Consistent Gets',''Physical Reads'和'DB Block Gets'的理解BloC
- consistent gets、db block gets的簡單精闢的理解BloC
- 淺談consistent gets的計算
- Consistent Gets,Physical Reads和DB Block Gets的解釋(轉)BloC
- (轉)關於 db block gets,consistent gets,physical reads的概念BloC
- 對'Consistent Gets',''Physical Reads'和'DB Block Gets'的理解和解釋BloC
- 【Oracle-記憶體管理】-DB Blocks gets,Consistent gets And Physical readsOracle記憶體BloC
- consistent gets暴漲的一種情況
- sqlplus中arrayseize引數以及consistent getsSQL
- oracle實驗記錄 (oracle consistent gets 計算)Oracle
- Consistent Gets(就是logical read)+ DB Block Gets = 所謂的Logical ReadsBloC
- 關於統計中Consistent Gets,Physical Reads和DB Block Gets的意義BloC
- 關於執行計劃裡recursive calls,db block gets和consistent gets引數的解釋BloC
- [20111229]Consistent gets from cache (fastpath).txtAST
- [20111228]理解consistent gets*相關資訊
- [20111229]理解consistent gets*相關資訊[補充]
- 行欲取導致sqlplus中trace的consistent gets遠大於實際塊數SQL
- Export Parameter : ConsistentExport
- gets函式的漏洞函式
- C語言關於指標,gets()和gets_s()函式的理解C語言指標函式
- Export Parameter : Object_ConsistentExportObject
- Your Prediction Gets As Good As Your DataGo
- db block gets的解釋[轉]BloC
- Why Archive, FRA Diskgroup Gets Mounted / DismountedHive
- Arraysize 對consistent get的影響
- getc();fgetc();getchar();gets();fgets();
- gets函式的不安性詳解函式
- Database performance gets slower the longer the database is runningDatabaseORM
- consistent hash 原理,優化及實現優化
- db block get和consistent read getBloC