zoukankan      html  css  js  c++  java
  • 物理读,硬解析,函数调用在查询中耗时的大概分比

    第一次执行:

    drop table t purge;
    create table t as select * from dba_objects;

    set linesize 1000
    set autotrace on
    set timing on

    select count(*) from t


    SQL> create table t as select * from dba_objects;

    表已创建。

    SQL> set timing on;
    SQL> set linesize 1000;
    SQL> set autotrace on;
    SQL> select count(*) from t;

    COUNT(*)
    ----------
    71976

    已用时间: 00: 00: 00.06

    执行计划
    ----------------------------------------------------------
    Plan hash value: 2966233522

    -------------------------------------------------------------------
    | Id | Operation | Name | Rows | Cost (%CPU)| Time |
    -------------------------------------------------------------------
    | 0 | SELECT STATEMENT | | 1 | 287 (1)| 00:00:04 |
    | 1 | SORT AGGREGATE | | 1 | | |
    | 2 | TABLE ACCESS FULL| T | 72853 | 287 (1)| 00:00:04 |
    -------------------------------------------------------------------

    Note
    -----
    - dynamic sampling used for this statement (level=2)


    统计信息
    ----------------------------------------------------------
    28 recursive calls
    0 db block gets
    1100 consistent gets
    1025 physical reads
    0 redo size
    424 bytes sent via SQL*Net to client
    415 bytes received via SQL*Net from client
    2 SQL*Net roundtrips to/from client
    0 sorts (memory)
    0 sorts (disk)

    SQL> alter system flush shared_pool;----将缓冲的执行计划清除,物理读保留

    SQL>select count(*) from t

    SQL> alter system flush shared_pool;

    系统已更改。

    已用时间: 00: 00: 00.14
    SQL> select count(*) from t;

    COUNT(*)
    ----------
    71976

    已用时间: 00: 00: 00.03

    执行计划
    ----------------------------------------------------------
    Plan hash value: 2966233522

    -------------------------------------------------------------------
    | Id | Operation | Name | Rows | Cost (%CPU)| Time |
    -------------------------------------------------------------------
    | 0 | SELECT STATEMENT | | 1 | 287 (1)| 00:00:04 |
    | 1 | SORT AGGREGATE | | 1 | | |
    | 2 | TABLE ACCESS FULL| T | 72853 | 287 (1)| 00:00:04 |
    -------------------------------------------------------------------

    Note
    -----
    - dynamic sampling used for this statement (level=2)


    统计信息
    ----------------------------------------------------------
    282 recursive calls
    0 db block gets
    1128 consistent gets
    6 physical reads
    0 redo size
    424 bytes sent via SQL*Net to client
    415 bytes received via SQL*Net from client
    2 SQL*Net roundtrips to/from client
    5 sorts (memory)
    0 sorts (disk)
    1 rows processed

    alter system flush buffer_cache;  ----data buffer缓冲区掉,即只有物理读

    select count(*) from t;

    1 rows processed

    SQL> alter system flush buffer_cache;

    系统已更改。

    已用时间: 00: 00: 00.45
    SQL> select count(*) from t;

    COUNT(*)
    ----------
    71976

    已用时间: 00: 00: 00.01

    执行计划
    ----------------------------------------------------------
    Plan hash value: 2966233522

    -------------------------------------------------------------------
    | Id | Operation | Name | Rows | Cost (%CPU)| Time |
    -------------------------------------------------------------------
    | 0 | SELECT STATEMENT | | 1 | 287 (1)| 00:00:04 |
    | 1 | SORT AGGREGATE | | 1 | | |
    | 2 | TABLE ACCESS FULL| T | 72853 | 287 (1)| 00:00:04 |
    -------------------------------------------------------------------

    Note
    -----
    - dynamic sampling used for this statement (level=2)


    统计信息
    ----------------------------------------------------------
    0 recursive calls
    0 db block gets
    1030 consistent gets
    1026 physical reads
    0 redo size
    424 bytes sent via SQL*Net to client
    415 bytes received via SQL*Net from client
    2 SQL*Net roundtrips to/from client
    0 sorts (memory)
    0 sorts (disk)
    1 rows processed

    可以得出结论:  在一次sql查询中, recursive calls是在硬解析的执行计划的产生过程中,软解析中没有, 且硬解析的时间, 要远远大于物理读的时间(当然这个和数据量有关系)。

  • 相关阅读:
    通过设置P3P头来实现跨域访问COOKIE
    随心所欲玩复制 详解robocopy
    MySQL的mysqldump工具的基本用法
    uvm_void 寂静的空宇
    Chisel语言
    IP-XACT IP IEEE交换格式
    SystemC简介
    ( 转)UVM验证方法学之一验证平台
    (转)让你彻底理解:静态时序分析
    (转)存储芯片入门漫谈
  • 原文地址:https://www.cnblogs.com/kangls/p/3586586.html
Copyright © 2011-2022 走看看