测试SQLPLUS的ARRAYSIZE对性能的影响
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了测试SQLPLUS的ARRAYSIZE对性能的影响,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2940字,纯文字阅读大概需要5分钟。
内容图文
![测试SQLPLUS的ARRAYSIZE对性能的影响](/upload/InfoBanner/zyjiaocheng/547/8cb4559d49a64ae6910863165cf0147a.jpg)
consistent gets,这个是从undo里读的数量,Oracle 为了保证数据的一致性,当一个查询很长,在查询之后,数据块被修改,还未提交
arraysize定义了一次返回到SQLPLUS客户端的行数,当扫描了arraysize 行后,停止扫描,返回数据,然后继续扫描。
这个过程就是统计信息中的SQL*Net roundtrips to/from client。
因为arraysize 默认是15行,那么就有一个问题,所以如果按照15行扫描一次,那么每次扫描要多扫描一个数据块,一个数据块也可能就会重复扫描多次。
重复的扫描会增加consistent gets 和 physical reads。 增加physical reads,这个很好理解,扫描的越多,物理读的可能性就越大。
consistent gets,这个是从undo里读的数量,Oracle 为了保证数据的一致性,当一个查询很长,在查询之后,数据块被修改,还未提交,再次查询时候,Oracle根据Undo 来构建CR块,这个CR块,可以理解成数据块在之前某个时间的状态。 这样通过查询出来的数据就是一致的。
那么如果重复扫描的块越多,需要构建的CR块就会越多,这样读Undo 的机会就会越多,consistent gets 就会越多。
如果数据每次传到客户端有中断,那么这些数据会重新扫描,这样也就增加逻辑读,所以调整arraysize可以减少传的次数,,减少逻辑读。
所以通过上面的说明,arraysize 参数如果过低,会影响如physical reads,consistent gets 还有SQL*Net roundtrips to/from client次数。 ---本段引自DAVE博客。
实验结论:实验用表是由dba_objects;创建。通过设置arraysize为1、15、200,可以通过最后的汇总表格得出将arraysize设置为200,可以得到更好的查询性能。
具体表现在:SQL语句执行时间大幅减少,通过Oracle Net从客户端收到的字节总数大幅减少,SQL * Net发送和从客户端接收的字节总数大幅减少--减幅比例接近arraysize尺寸的比例。
所以在使用SQLPLUS客户端查取大数据、SPOOL输出时,可以考虑将arraysize设置的大一点,提高性能。永久设置此参数可以在$ORACLE_HOME/sqlplus/admin/glogin.sql中写入set arraysize 15 这样。
1,使用SQLPLUS的ARRAYSIZE默认值15来进行测试BYS@bys1>create tabele test2 as select * from dba_objects;
BYS@bys1>alter system flush shared_pool;
System altered.
BYS@bys1>alter system flush buffer_cache;
System altered.
BYS@bys1>set arraysize 15 因为我已经更改过,所以手动再改为默认的15
此设置只在当前SESSION中有用,如果需要永久设置,可以在$ORACLE_HOME/sqlplus/admin/glogin.sql中写入set arraysize 15 这样。
BYS@bys1>set autotrace traceonly stat
BYS@bys1>select * from test2;
72465 rows selected.
Elapsed: 00:00:02.12
Statistics
----------------------------------------------------------
606 recursive calls
0 db block gets
5882 consistent gets
1052 physical reads
0 redo size
8036433 bytes sent via SQL*Net to client
53549 bytes received via SQL*Net from client
4832 SQL*Net roundtrips to/from client
6 sorts (memory)
0 sorts (disk)
72465 rows processed
汇总:执行时间:02.12秒,606次递归调用,5882 一致读,1052 物理读,8036433 bytes发送,53549 bytes接收,4832次往返
更多详情见请继续阅读下一页的精彩内容:
相关阅读:
rlwrap - 解决Linux下SQLPLUS退格、上翻键乱码问题
SQLPLUS spool 到动态日志文件名
Oracle SQLPLUS提示符设置
通过设置SQLPLUS ARRAYSIZE(行预取)加快SQL返回速度
Oracle arraysize 和 fetch size 参数与性能优化说明
内容总结
以上是互联网集市为您收集整理的测试SQLPLUS的ARRAYSIZE对性能的影响全部内容,希望文章能够帮你解决测试SQLPLUS的ARRAYSIZE对性能的影响所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。