`

consistent gets db block gets

 
阅读更多

consistent gets :consistent_gets是从回滚段中读到的前映(或叫读取一致性影象), 看见的数据是查询开始的时间点的,所以若存在block在查询开始后发生了变化的情况,则必须产生 before image 然后读数据,这就是一致读的含义
查询就是表示 consistent gets (query mode),因为查询要保证所获取的数据的时间点的一致性,所以叫一致读,即使是从当前 buffer 获得的数据,也叫 consistent gets ,这仅仅表达一种模式一种期望,并不表示真实的是从 当前buffer 获得 还是从回滚段获取数据产生的 bufore image 。

db block gets : current mode , 不管这个块上的数据是否可能存在 before image ,也就是说不管是否存在回滚中数据可以 回滚,只看见当前最新块的数据,即使别人正在更新,也看见别人更新状态的数据,比如dml的时候就不需要看见别人更改前的数据,而是看见正在更改的,当然 同时,若操作相同数据则被lock住。也就是说一次查询中看见的数据可能不在同一个时间点上,比如一个大的dml,当dml 开始更新一个非常大的表后,这个表更新的过程中,有一个进程去把该表末尾的一个记录更新了,然后这个大更新抵达该记录的时候会被阻塞的,若该进程事物提 交,则大更新会覆盖该事务的更新,也就是说,这个大更新所看见的数据是当前的,不具有时间点的一致性,所以叫 current mode,个人认为db block gets这个词用的不好, 容易让人误解. 如果改成inconsistent gets可能会更准确一些
别人blog写的。

 

SQL> alter system flush buffer_cache;

 

系统已更改。

 

SQL> set autot

用法: SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]

SQL> set autot traceonly stat

SQL> select * from t;

 

已选择798945行。

 

 

统计信息

----------------------------------------------------------

          1  recursive calls

          0  db block gets   --这个为0

      63677  consistent gets

      11118  physical reads

          0  redo size

   85740332  bytes sent via SQL*Net to client

     586267  bytes received via SQL*Net from client

      53264  SQL*Net roundtrips to/from client

          0  sorts (memory)

          0  sorts (disk)

     798945  rows processed

 

SQL> select * from t;

 

已选择798945行。

 

 

统计信息

----------------------------------------------------------

          0  recursive calls

          0  db block gets

      69587  consistent gets   --全是一致性得到,因为已经在Buffer_cache中

          0  physical reads

          0  redo size

   85740332  bytes sent via SQL*Net to client

     586267  bytes received via SQL*Net from client

      53264  SQL*Net roundtrips to/from client

          0  sorts (memory)

          0  sorts (disk)

     798945  rows processed

 

SQL> select * from t for update;

 

已选择798945行。

 

 

统计信息

----------------------------------------------------------

        476  recursive calls

     812439  db block gets  --更新时,产生这个

     884932  consistent gets

          5  physical reads

  160912940  redo size

   73057198  bytes sent via SQL*Net to client

     586267  bytes received via SQL*Net from client

      53264  SQL*Net roundtrips to/from client

          0  sorts (memory)

          0  sorts (disk)

     798945  rows processed

 

SQL> rollback;

 

回退已完成。

 

SQL> alter sytem flush buffer_cache;

alter sytem flush buffer_cache

      *

第 1 行出现错误:

ORA-00940: 无效的 ALTER 命令

 

 

SQL> alter system flush buffer_cache;

 

系统已更改。

 

SQL> select * from t for update;

 

已选择798945行。

 

 

统计信息

----------------------------------------------------------

        476  recursive calls

     812437  db block gets

     884836  consistent gets

      11122  physical reads

  160903012  redo size

   73057198  bytes sent via SQL*Net to client

     586267  bytes received via SQL*Net from client

      53264  SQL*Net roundtrips to/from client

          0  sorts (memory)

          0  sorts (disk)

     798945  rows processed

 

SQL> alter system flush buffer_cache;

 

系统已更改。

 

SQL> desc t;

 名称                                      是否为空? 类型

 ----------------------------------------- -------- ---------------------------

 

 OWNER                                              VARCHAR2(30)

 OBJECT_NAME                                        VARCHAR2(128)

 SUBOBJECT_NAME                                     VARCHAR2(30)

 OBJECT_ID                                          NUMBER

 DATA_OBJECT_ID                                     NUMBER

 OBJECT_TYPE                                        VARCHAR2(19)

 CREATED                                            DATE

 LAST_DDL_TIME                                      DATE

 TIMESTAMP                                          VARCHAR2(19)

 STATUS                                             VARCHAR2(7)

 TEMPORARY                                          VARCHAR2(1)

 GENERATED                                          VARCHAR2(1)

 SECONDARY                                          VARCHAR2(1)

 

SQL> update t set owner='a';

 

已更新798945行。

 

 

统计信息

----------------------------------------------------------

       4564  recursive calls

    7008787  db block gets

    1123165  consistent gets

      13434  physical reads

  555747124  redo size

        683  bytes sent via SQL*Net to client

        558  bytes received via SQL*Net from client

          4  SQL*Net roundtrips to/from client

         16  sorts (memory)

          0  sorts (disk)

     798945  rows processed

 

SQL> select * from t;

 

已选择798945行。

 

 

统计信息

----------------------------------------------------------

          1  recursive calls

          0  db block gets

      63677  consistent gets 

          0  physical reads

          0  redo size

   82886810  bytes sent via SQL*Net to client

     586267  bytes received via SQL*Net from client

      53264  SQL*Net roundtrips to/from client

          0  sorts (memory)

          0  sorts (disk)

     798945  rows processed

可以理解 为:

 

consistent gets : 是由 查询语句产生的, 不管所查的数据是否需要构造前镜像,都要算进去

db block gets:   是由update,delete,select for update 产生的

分享到:
评论

相关推荐

    oracle数据库的性能调整

    如果物理读取的比例较高(`1 - PHYSICALREADS / (DBBLOCKGETS + CONSISTENTGETS) ),则可能需要增加DB BLOCK BUFFERS的值。 #### 三、I/O优化 I/O性能对于Oracle数据库至关重要,因为大多数性能瓶颈都与磁盘I/O...

    逻辑读写深入分析.pdf

    - **`consistent gets`**:这是除`db block gets`外其他所有逻辑读的统称,包括对表、索引的数据块读取以及为了确保数据一致性而对UNDO数据块的读取。 ##### 2. 统计数据来源 Oracle通过一系列视图如`v$sysstat`、`...

    Oracle命中率 笔记整理结合实例

    SQL> SELECT NAME, PHYSICAL_READS, DB_BLOCK_GETS, CONSISTENT_GETS, 1 - (PHYSICAL_READS / (DB_BLOCK_GETS + CONSISTENT_GETS)) "Hit Ratio" FROM V$BUFFER_POOL_STATISTICS WHERE NAME='DEFAULT'; 通常情况下,...

    SQL执行计划简单分析

    SQL 执行计划简单分析 在 SQL 优化中,分析执行计划是一个非常重要的步骤。执行计划可以帮助我们了解 SQL ...递归调用、DB Block Gets 和 Consistent Gets 等统计信息可以帮助我们了解 SQL 语句的执行过程和资源消耗。

    SQL Server 数据库的优化及保护.pdf

    计算高速缓冲区命中率的公式为:Hit Ratio = 1 - (physical reads / (db block gets + consistent gets))。对于一般环境,命中率要求大于80%,而在UNIX环境下使用RAW DEVICE时,要求更高,需大于90%。如果命中率低于...

    Oracle逻辑读写深入分析

    它分为两大类:“db block gets”和“consistent gets”。 - **db block gets**:这类逻辑读发生在需要对数据块中的数据进行修改时,即当会话需要将一个数据块读入buffer cache,并以当前模式(Current Mode)进行...

    数据库调优

    - **计算公式**:`Hit Ratio = 1 - (physical reads / (db block gets + consistent gets))` - 当命中率低于60%~70%时,建议增加`db_block_buffers`的值以扩大缓冲区高速缓存的容量。 3. **调整方法** - `db_...

    oracle性能调优之buffer cache

    * 查看 Buffer Cache 的命中率,使用公式 1 - (physical reads cache / consistent gets from cache + db block gets from cache)计算。 * 在多 Buffer Pool 情况下,分别统计不同 Buffer Pool 的命中率。 * 查看...

    Oracle性能分析——使用set_autotrace_on和set_timing_on来分析select语句的性能.doc

    统计信息展示了 SQL 语句的执行情况,例如recursive calls、db block gets、consistent gets、physical reads 等;trace 信息展示了 SQL 语句的执行过程。 在分析 autotrace 结果时,需要关注的点包括: * 运行...

    Oracle数据库优化设计.pdf

    V$SYSSTAT中的consistent gets和db block gets统计了两种模式下的数据读取,而physical reads则记录了磁盘的物理读取。通过比较这些值,可以计算出命中率并作出相应的优化决策。 其次,共享池的调整至关重要。共享...

    oracle自定义监视器

    BLOCK_GETS, CASE WHEN NAME='consistentgets' THEN VALUE END CONSISTENT_GETS FROM V$SYSSTAT WHERE Name IN ('physicalreads', 'dbblockgets', 'consistentgets')) ``` 3. **共享池重用率**: 监测共享池中...

    oracle 的Autotrace介绍

    Autotrace Statistics 中有多个常用列,包括 db block gets、consistent gets、physical reads、redo size、sorts (memory) 和 sorts (disk) 等。 在使用 Autotrace 时,需要设置相关的命令,包括 SET AUTOTRACE ...

    oracle sga 调整

    计算命中率为:`1 - (physical reads / (db block gets + consistent gets))`。若命中率低于90%,则需增大缓冲区高速缓存的大小。 4. **大型池**:在shared server环境中,大型池用于存储各种共享资源。如果需要...

    Oracle的性能优化.pdf

    通过v$sysstat视图可以监测dbblock gets、consistent gets和physical reads这三个指标。缓冲区的命中率直接影响I/O性能。若物理读取(physical reads)过多,表明命中率低,需要调整缓冲区大小以减少磁盘I/O。 此外...

    DBA笔试题 附答案

    这些指标可以帮助我们判断SQL执行效率,比如如果DB Block Gets和Physical Reads的值很高,可能意味着缓存命中率低,需要进一步优化。 #### 二、索引的理解 索引是提高查询性能的关键技术之一,在Oracle数据库中...

    ORACLE11G技术文档

    count FROM V$waitstat WHERE class IN ('system undo header', 'system undo block', 'undo header', 'undo block')` 和 `SELECT sum(value) FROM V$sysstat WHERE name IN ('db_block_gets', 'consistent gets')`...

    Oracle9i数据库的性能优化技巧.pdf

    对于数据库高速缓存命中率的调整,需要分析'db block gets'和'consistent gets',并据此优化缓存配置。 总的来说,Oracle9i数据库的性能优化是一个系统性工程,需要结合实际应用场景,从硬件配置、数据库设计、SQL...

    阿里巴巴的Oracle DBA笔试题参考答案

    查看该SQL的response time(db block gets/consistent gets/physical reads/sorts)。 六、索引 索引是数据库优化的重要手段。以下是索引相关的知识点: 1. 索引结构:b-tree index、bitmap index、function ...

    如何调整Oracle数据库服务器的性能

    - **缓冲区高速缓存调整**:通过观察`dbblock gets`、`consistent gets`和`physical reads`,分析缓冲区高速缓存的使用情况,如果物理读取次数过多,可能需要增加缓冲区的数量或大小。 3. **调整磁盘I/O** - **...

    Oracle培训讲义(性能分析与调整).docx

    - **db block gets**: 数据块获取次数,反映从数据文件读取的数据块数量。 - **consistent gets**: 一致性读取次数,反映从缓存或数据文件中读取的数据块数量。 - **physical reads**: 物理读取次数,即直接从磁盘...

Global site tag (gtag.js) - Google Analytics