日期:2014-05-17  浏览次数:20958 次

关于执行计划的问题?
109837 rows selected.
 

Statistics
 ----------------------
        1786  recursive calls
           5  db block gets
        2771  consistent gets
        5617  physical reads
           0  redo size
     6429630  bytes sent via SQL*Net to client
       80927  bytes received via SQL*Net from client
        7324  SQL*Net roundtrips to/from client
          21  sorts (memory)
           1  sorts (disk)
      109837  rows processed
 
以上是我查询某张表时的执行计划(注:当执行这一查询前,首先是清空了flush_cache和shared_pool),我想请问一下各位大侠们:
 1、‘db block gets’+‘consistent gets’的数值表示了逻辑读取,但是我之前清空了缓存,怎么会有逻辑读块数呢?
 2、consistent gets 的意思是:数据请求总数在回滚段Buffer中的数据一致性读所需要的数据块,我想请大侠们解释一下这只是一个查询,怎么会产生到回滚段去了呢?并且还有这么多所需要的数据块?
 3、sorts(memory) 和 sorts (disk) 在内存和磁盘排序量,这是什么意思啊?
 
先谢谢各位大侠的细心解释,小生在此鞠躬了!谢谢!
statistics buffer cache

------解决方案--------------------
清空了flush_cache和shared_pool、只是把library cache里面的执行计划和统计信息 清空掉 、数据块还在、、重启就没了

第二个问题、一致性读、到undo里面去取before image 、Oracle 强于 其他 RDBMS的地方

第三个问题、顾名思义啊、在内存中排序、如果不够、则要到磁盘、到了磁盘性能肯定下降