ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 关于consistent gets的一点理解

关于consistent gets的一点理解

原创 Linux操作系统 作者:lsq_008 时间:2009-04-29 22:21:51 0 删除 编辑

先看几个概念:

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.

其中consistent gets大致的意思是对数据块进行一致性读取的次数,这并不意味着是读取的数据块的数量。测试如下:

SQL>  set array 15
SQL>  select * from test;

154080 rows selected.


Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
      12051  consistent gets
          0  physical reads
          0  redo size
   14193925  bytes sent via SQL*Net to client
     113376  bytes received via SQL*Net from client
      10273  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
     154080  rows processed

SQL> set array 5000

SQL> select * from test;

154080 rows selected.


Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
       1969  consistent gets
          0  physical reads
          0  redo size
   12893318  bytes sent via SQL*Net to client
        725  bytes received via SQL*Net from client
         32  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
     154080  rows processed

很明显,当设置不同的array size时,同样的查询,其consistent gets值是差别很大的,当array size越大时,其consistent gets大小越接近于block数量,可以进行推断,当array size设置较小时,比如15,数据库每次从buffer cache中只取得15条记录,而接下来需要读取的15条记录很大可能与前15条记录位于同一数据块上,这样,就对同一个block进行了多次的读取,从而导致consistent reads数量远远大于block数量。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10972173/viewspace-592301/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
十余年大型金融及电信系统数据库管理经验,曾服务于中国建设银行、中国移动。对oracle,mysql数据库有深入了解。 擅长python开发,独立开发了开源数据库自动化监控运维平台Power Monitor。

注册时间:2008-02-29

  • 博文量
    325
  • 访问量
    1235850