Oracle arraysize 和 fetch size 参数与性能优化说明.docVIP

 Oracle arraysize 和 fetch size 参数与性能优化说明.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Oracle arraysize 和 fetch size 参数与性能优化说明 /Linux/2011-07/37996.htm 一. 参数说明 1.1 arraysize 参数 ?????? Oracle sqlplus 有很多设置,这个在我之前的blog有说明: ????????????? Oracle sqlplus 常用命令总结 /Linux/2010-02/24553.htm ? ?????? 昨天和owind 讨论问题的时候,他强调了这个参数,通过一些测试,确实与性能这块有很大影响。 ?????? Arraysize specifies how many rows SQL*Plus will fetch in a call. The number n can be between 1 and 5000. ? ?????? arraysize定义了一次返回到客户端的行数,当扫描了arraysize?行后,停止扫描,返回数据,然后继续扫描。 ?????? 这个过程就是统计信息中的SQL*Net?roundtrips?to/from?client。因为arraysize 默认是15行,那么就有一个问题,因为我们一个block 中的记录数一般都会超过15行,所以如果按照15行扫描一次,那么每次扫描要多扫描一个数据块,一个数据块也可能就会重复扫描多次。 ? ?????? 重复的扫描会增加consistent?gets 和?physical?reads。 增加physical reads,这个很好理解,扫描的越多,物理的可能性就越大。 ?????? consistent gets,这个是从undo里读的数量,Oracle 为了保证数据的一致性,当一个查询很长,在查询之后,数据块被修改,还未提交,再次查询时候,Oracle根据Undo 来构建CR块,这个CR块,可以理解成数据块在之前某个时间的状态。 这样通过查询出来的数据就是一致的。 ?????? 那么如果重复扫描的块越多,需要构建的CR块就会越多,这样读Undo 的机会就会越多,consistent gets 就会越多。 ? ?????? 如果数据每次传到客户端有中断,那么这些数据会重新扫描,这样也就增加逻辑读,所以调整arraysize可以减少传的次数,减少逻辑读。 ? ?????? 关于CR 参考我的Blog: ?????? CR (consistent read) blocks create 说明 ?????? /Linux/2011-07/37997.htm ? ?????? 所以通过上面的说明,arraysize 参数如果过低,会影响如physical reads,consistent gets 还有SQL*Net?roundtrips?to/from?client次数。 ? 永久保存arraysize 参数: ?????? 可以该参数保存到glogin.sql 或者login.sql 文件里,这样可以永久生效,不必每次都去set 指定。 ? -- 查看默认值 SYS@anqing2(rac2) show arraysize arraysize 15 ? --手工修改arraysize SYS@anqing2(rac2) set arraysize 100 SYS@anqing2(rac2) show arraysize arraysize 100 ? --修改glogin.sql [oracle@rac2 admin]$ pwd /u01/app/oracle/product/10.2.0/db_1/sqlplus/admin [oracle@rac2 admin]$ ls glogin.sql? help? iplus? libisqlplus.def? libsqlplus.def? plustrce.sql? pupbld.sql ? 在glogin.sql里添加: set arraysize 5000 ? --重新登陆,查询 SYS@anqing2(rac2) show arraysize arraysize 5000 ? ? 1.2? fetch size 参数 ?????? arraysize 和 fetch size 参数都是客户段的一个参数,需要在客户段来设置,arraysize 是在sqlplus 中设置的,如果我们通过程序去连数据库,那么这个参数就是Fetch size。 它的作用和arraysize 一样。 Fetch size 默认是10,一般改成50就ok了,太大会消耗内存。 ? ?????? The JDBC fetch size gives the JDBC driver a hint as to the number of

文档评论(0)

cigu35 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档