视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
通过设置SQLPLUSARRAYSIZE(行预取)加快SQL返回速度
2020-11-09 12:01:20 责编:小采
文档


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

下载本文
显示全文
专题