通过设置SQLPLUS ARRAYSIZE(行预取)加快SQL返回速度

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

有时候你可能会用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倍了,同时也可以看到,第二次逻辑读比第一次低了,那说明设置行预取会影响逻辑读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1953870.html

(0)
上一篇 2025年2月23日 03:15:32
下一篇 2025年2月23日 03:16:28

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论