zoukankan      html  css  js  c++  java
  • 通过设置SQLPLUS ARRAYSIZE(行预取)加快SQL返回速度

    有时候你可能会用SQLPLUS spool 表的数据,那么怎么加快spool速度呢?SQLPLUS中有个行预取的选项

    SQLPLUS中 arraysize默认为15 

    SQL> show arraysize
    arraysize 15

    它表示从Oracle服务器端一次只传递15行记录到客户端(SQLPLUS),当然了JDBC,WEBLOGIC也有行预取,具体自己Google

    举个例子:

    SQL> select * from test where owner='ADWU_OPTIMA_AP11';

    773 rows selected.

    Elapsed: 00:00:30.95

    Execution Plan
    ----------------------------------------------------------
    Plan hash value: 217508114

    --------------------------------------------------------------------------
    | Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    --------------------------------------------------------------------------
    |   0 | SELECT STATEMENT  |      |   593 |   134K|   882   (3)| 00:00:03 |
    |*  1 |  TABLE ACCESS FULL| TEST |   593 |   134K|   882   (3)| 00:00:03 |
    --------------------------------------------------------------------------

    Predicate Information (identified by operation id):
    ---------------------------------------------------

       1 - filter("OWNER"='ADWU_OPTIMA_AP11')


    Statistics
    ----------------------------------------------------------
              0  recursive calls
              0  db block gets
           2976  consistent gets
              0  physical reads
              0  redo size
          50484  bytes sent via SQL*Net to client
            597  bytes received via SQL*Net from client
             53  SQL*Net roundtrips to/from client
              0  sorts (memory)
              0  sorts (disk)
            773  rows processed

    SQL> set arraysize 5000
    SQL> select * from test where owner='ADWU_OPTIMA_AP11';

    773 rows selected.

    Elapsed: 00:00:16.06

    Execution Plan
    ----------------------------------------------------------
    Plan hash value: 217508114

    --------------------------------------------------------------------------
    | Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    --------------------------------------------------------------------------
    |   0 | SELECT STATEMENT  |      |   593 |   134K|   882   (3)| 00:00:03 |
    |*  1 |  TABLE ACCESS FULL| TEST |   593 |   134K|   882   (3)| 00:00:03 |
    --------------------------------------------------------------------------

    Predicate Information (identified by operation id):
    ---------------------------------------------------

       1 - filter("OWNER"='ADWU_OPTIMA_AP11')


    Statistics
    ----------------------------------------------------------
              0  recursive calls
              0  db block gets
           2927  consistent gets
              0  physical reads
              0  redo size
          47800  bytes sent via SQL*Net to client
            241  bytes received via SQL*Net from client
              2  SQL*Net roundtrips to/from client
              0  sorts (memory)
              0  sorts (disk)
            773  rows processed

    当设置 arraysize 之后,SQLPLUS 客户端与数据库Server端交互次数明显减少,这就是为什么返回773行数据第二次比第一次快1倍了,同时也可以看到,第二次逻辑读比第一次低了,那说明设置行预取会影响逻辑读。

  • 相关阅读:
    java DES转C#DES加密解密
    PIE SDK影像格式转换
    PIE SDK位深转换
    PIE SDK存储格式转换
    PIE SDK栅格生成等值线、面
    PIE SDK反距离权重插值算法
    PIE SDK克里金插值法
    PIE SDK热力图
    PIE SDK Alpha通道数据渲染
    PIE SDK 多数据源的复合数据集加载
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330578.html
Copyright © 2011-2022 走看看