Oracle数据库中,consistent gets在判断一段SQL的性能时非常有用,通常来讲比较两段SQL的性能好坏不是看谁的执行时间短,而是看谁的consistent gets小。不过这也不是绝对的,下面这个例子就是一个反例。

一:通常情况下,不在logical RAM buffer中的数据要通过physical reads来读取,而physical reads后通常会紧跟着一个consistent gets.因此一般情况下consistent gets是要比physical reads大的。但是有一个特例,如果physical reads得到的数据直接用于HASH或者SORT,则只记为physical reads不记为consistent gets.所以加上order by后有可能physical reads多但consistent gets少。不过这个原因不是我这里现象产生的原因,因为我这个实验里根本没有physical reads.

二:arraysize的影响。arraysize是指读取数据时一次读取得到的行数。这个值默认为15,使用show arraysize命令可以查看。一个数据块例如有100条记录,www.linuxidc.com 么并不是读取这个块一次就能取到所有数据,以arraysize=15为例,就要有 100/15=7次consistent gets.把arraysize设置得大一点可以降低consistent gets,不过有时候可能会消耗更多的资源。如果我们做select count(0) from test;操作,那么Oracle DBA会把arraysize暂时设为test的行数,因此consistent gets会很少:

代码如下:

ETL@RACTEST> select count(0) from test; Elapsed: 00:00:00.00 Execution Plan Plan hash value: 1950795681 --------------

| Id | Operation

| Name | Rows | Cost (%CPU)| Time

| | 0 | SELECT STATEMENT |

| 1 |

6 (0)| 00:00:01 | | 1 | SORT AGGREGATE |

| 1 |

| |

| 2 | TABLE ACCESS FULL| TEST | 10000 |

6 (0)| 00:00:01 | ------------------------------------------------------------------- Note

- dynamic sampling used for this statement Statistics

0 recursive calls

0 db block gets

23 consistent gets

0 physical reads

0 redo size

515 bytes sent via SQL*Net to client

465 bytes received via SQL*Net from client

2 SQL*Net roundtrips to/from client

0 sorts (memory)

0 sorts (disk)

1 rows processed

可以看到select count(0)只需要23个逻辑读。一共10000条数据,10000/15=666.667 ,好,667+23=690!和第1个SQL的consistent gets竟然惊人的一致!这不是巧合,这就是consistent gets的计算公式。我们还可以发现select count(0)和第2个SQL的consistent gets竟然也惊人地一致,都是23!

TOM的解释是:

在select * from test order by 1;时,Oracle也把arraysize临时设为test表的行数,它把所有数据先全部取出来放到sort区做排序,而在sort区的读取就不算在 consistent gets里了。所以虽然第2个SQL和select count(0)的consistent gets相同,但它的效率一定比select count(0)低,我们看执行计划里的COST便可以得知,第2个SQL的COST为7,select count(0)的COST为6,第1个SQL的COST也为6.(COST相同并不代表执行效率完全相同)

oracle consistent gets,consistent gets在Oracle使用特例相关推荐

  1. oracle导入java包时出错,Oracle导入导出的常见错误

    做数据的导入导出操作,最常用的就是imp/exp和impdp/expdp,经常会碰见各种错误,之前总结过一些,<解决导入过程中出现的ORA-02289错误>.<生产数据导入测试环境碰 ...

  2. oracle数据库延迟执行,如何诊断oracle数据库运行缓慢或hang住的问题

    为了诊断oracle运行缓慢的问题首先要决定收集哪些诊断信息,可以采取下面的诊断方法: 1.数据库运行缓慢这个问题是常见还是在特定时间出现 如果数据库运行缓慢是一个常见的问题那么可以在问题出现的时候收 ...

  3. oracle ora 00283,【案例】Oracle报错ORA-16433非归档丢失redo无法启动的恢复过程

    天萃荷净 Oracle研究中心案例分析:运维DBA反映Oracle数据库处理非归档模式,redo文件损坏常规修复无法正常open数据库. 本站文章除注明转载外,均为本站原创: 转载自love wife ...

  4. oracle lms进程 内存,Oracle进程:LMS 进程与Oracle RAC

    Oracle进程:LMS 进程与Oracle RAC LMS进程是Oracle RAC环境下非常重要的一个进程,关于这个进程的解释在不同文档中也有所不同. 在Oracle 9iR2的概念手册中这样介绍 ...

  5. oracle恢复主键丢失,案例:Oracle重建控制文件丢失undo异常恢复 ORA-01173模拟与恢复...

    天萃荷净 重建控制文件丢失undo异常恢复 ORA-01173模拟与恢复 数据库异常关闭,使用resetlogs方式重建控制文件,不包含undo表空间相关数据库,然后尝试resetlogs打开数据库, ...

  6. oracle字符界面安装,怎么解决oracle在linux 纯字符界面安装有关问题

    之前在oracle 下面用图形装了(oracle图形界面安装遇到的问题), 毕竟图形界面用于个人使用,而服务器下的一般是字符界面,所以安又尝试字符界面的安装 我的环境是centos 6.3 64位 + ...

  7. oracle em 性能点不进,oracle em节点启动不成功问题处理总结

    客户数据库项目从oracle 9i数据库升级到oracle10g后,oracle em在节点1启动不成功,节点2可以正常启动. 节点1启动时报错如下: [oracle@zhgsdb1 ~]$ emct ...

  8. oracle 字符集 自造字,循序渐进Oracle:自定义字符集的使用、更改字符集的内部方式及字符集更改的案例...

    第3章  Oracle的字符集(3.9-3.11) Oracle全球支持(即Globalization Support)允许我们使用本地语言和格式来存储和检索数据.通过全球支持,Oracle可以支持多 ...

  9. oracle加as报错,【Oracle】-【sqlplus / as sysdba登录报错问题】-新用

    [Oracle]-[sqlplus / as sysdba登录报错问题]-新用户使用sqlplus / as sysdba登录报错解决 [Oracle]-[sqlplus / as sysdba登录报 ...

  10. oracle修改c root,从新发现Oracle太美之root.sh

    重新发现Oracle太美之root.sh 如果你执行下以下命令基本上会在Oracle软件目录下会发现两个root.sh的脚本 [oracle@rh64 Templates]$ find /u01/ - ...

最新文章

  1. MVC架构 在Android中的使用
  2. 雷讯和pix_青海叶陇沟金矿地质地球化学特征及找矿方向
  3. 每天一道LeetCode-----将数字集转成字母集,计算有多少种转换方式
  4. uva 10110——Light, more light
  5. 【Siddhi 5】Siddhi 自定义函数@Extension使用
  6. C#应用视频教程3.4 Halcon+C#测试
  7. 阿里云DataV数据展示的一些sql写法
  8. linux中下载nali + 配置golang环境
  9. 换了一把椅子之后才知道,原来人体工学可以这么香。
  10. html中字体设置为行书,行书的字体结构,漂亮的行书是如何写出来的(上)
  11. 骨传导耳机的利与弊有哪些?骨传导耳机到底好不好?
  12. shentou mianshiti
  13. 【python】tkinter界面化+百度API—聊天机器人(四)
  14. 收藏!2022年开发运维必备的10款顶级工具
  15. 基金老鼠仓调查云端稽查发力 大数据堪比淘宝
  16. 家用监控器怎么选择,怎么连接手机远程监控,保存多久视频
  17. arcgis 授权操作
  18. AlphaStar再升级:多智能体强化学习玩《星际争霸2》,排名超99.8%人类玩家
  19. 【亲测好用】Mac窗口管理器:Moom for Mac
  20. 【Shell案例】【awk匹配、grep查找文件内的字符串】6、去掉空行(删除空行)

热门文章

  1. HelloWorld - Watir
  2. 2011 10.1 GHOST XP SP3 快速装机纯净国庆版 V1.0
  3. ctf你好 1.1:灵魂拷问
  4. 基于SSM的仓储管理系统
  5. 制作 ESXI6.7 U盘安装盘
  6. 如何手动更新mac的固件
  7. mysql 社区版 tokudb,TokuDB·社区八卦·TokuDB团队
  8. css一些特殊的图形,CSS 绘制特殊图形
  9. 高考之后,“学”并未止步 :Juphoon Class (菊风云课堂)上线,助力构建实时互动课堂
  10. 人生重开模拟器 的主逻辑:每一年先判断天赋再判断事件