db block gets (current gets) VS. consistent gets
2013-08-21 01:50
337 查看
当前读(db block gets / current gets)与一致读(consistent gets)统称为逻辑读,逻辑读可能需要物理读把块读到cache中。
当前读指读现在已提交了的数据,一般在全表扫描读数据字典、更新、删除时发生。
一致读指读发出SELECT的那个时间点SCN的数据,一般在查询(增删改都可能有隐式查询)时发生。
How Oracle Manages Data Concurrency and Consistency http://docs.oracle.com/cd/B10501_01/server.920/a96524/c21cnsis.htm#2570
当前读指读现在已提交了的数据,一般在全表扫描读数据字典、更新、删除时发生。
一致读指读发出SELECT的那个时间点SCN的数据,一般在查询(增删改都可能有隐式查询)时发生。
db block gets are blocks read in 'current' mode. meaning, get me the block as it exists right now, no read consistency. do NOT undo changes. Again, it is a mode, not an indication of how many blocks didn't need changes -- rather how many blocks we asked for in that MODE.http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:865586003021
In general, a statement will either get a block from the cache in current mode or consistent read mode. Those are logical IO's. The logical IO might need to do a physical IO in order to get the block into the cache - but the statement is doing either a consistent read or current mode read.http://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:878847787577
You Asked hi tom i your discussion regarding consistant gets and db dblock gets you mention about block read in CURRENT MODE AND consistent mode Could you please explain exact meaning of this words by giving some examples? Thanks and we said... Ok, when you turn on autotrace in sqlplus you can see these stats. Lets run a query: ops$tkyte@ORA817.US.ORACLE.COM> set autotrace traceonly statistics ops$tkyte@ORA817.US.ORACLE.COM> ops$tkyte@ORA817.US.ORACLE.COM> select * from emp; 14 rows selected. Statistics ---------------------------------------------------------- 0 recursive calls 4 db block gets 2 consistent gets 0 physical reads 0 redo size 1979 bytes sent via SQL*Net to client 430 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 14 rows processed Here we had 4 db block gets. Those were blocks read in CURRENT MODE. The blocks that were read are actually the blocks that tell us how to FULL SCAN the dept table (data dictionary type of information). We need to get that in CURRENT MODE (as of RIGHT NOW) to get an accurate picture of what the table looks like. We also had 2 consistent gets -- these are blocks we read in "consistent read" mode -- also known as query mode. This means we were reading them as of the POINT IN TIME the query began. See http://download-east.oracle.com/docs/cd/A81042_01/DOC/server.816/a76965/c23cnsis.htm#17882 for a great discussion of this. Now, if we do a delete: ops$tkyte@ORA817.US.ORACLE.COM> delete from emp; 14 rows deleted. Statistics ---------------------------------------------------------- 0 recursive calls 20 db block gets 1 consistent gets 0 physical reads 4220 redo size 1009 bytes sent via SQL*Net to client 796 bytes received via SQL*Net from client 4 SQL*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 14 rows processed we do lots more db block gets -- why? because in order to delete the data we need to get the block in CURRENT MODE, as it exists right then. why did we do a consistent get? because the "read" part of the delete uses the consistent read mechanism -- we only delete data that existed in the table as of the point in time the delete began. Consider if DEPT was a 1,000,000 row table instead. It'll take a while to delete all of those rows. As you are deleting however, other sessions are inserting and committing data. This consistent read mechanism makes it so that we only delete the rows that existed WHEN WE BEGAN the delete. We will not delete this new data being inserted.http://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:878847787577
How Oracle Manages Data Concurrency and Consistency http://docs.oracle.com/cd/B10501_01/server.920/a96524/c21cnsis.htm#2570
相关文章推荐
- 执行计划里recursive calls,db block gets和consistent gets参数的解释
- 关于执行计划里recursivecalls,dbblockgets和consistentgets参数的解释
- 执行计划里recursive calls,db block gets和consistent gets参数的解释
- +++对于db block gets consistent gets physical reads的大收集和总结
- 对于'Consistent Gets',''Physical Reads'和'DB Block Gets'的理解和解释
- 对'Consistent Gets',''Physical Reads'和'DB Block Gets'的理解和解释
- db_block_gets和consistent_gets
- 对'Consistent Gets',''Physical Reads'和'DB Block Gets'的理解和解释
- 对'Consistent Gets',''Physical Reads'和'DB Block Gets'的理解和解释
- 对于'Consistent Gets',''Physical Reads'和'DB Block Gets'的理解和解释
- +++consistent read(读一致性)的通俗理解 & db block gets的解释
- db block gets&&consistent gets&&physical reads
- 关于执行计划里recursive calls,db block gets和consistent gets参数的解释
- LOGIC IO(逻辑读次数)= db block gets + consistent gets
- consistent get,db block get
- Physical read + Logical read(DB block gets ,consistent gets )
- 关于 db block gets,consistent gets,physical reads的概念
- DB Bocks gets,Consistent gets And Physical reads
- Db Block Gets
- 关于对db_block_gets的理解与实验