前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >88-被广为流传的参数优化, 是蜜糖还是毒药?

88-被广为流传的参数优化, 是蜜糖还是毒药?

作者头像
老虎刘
发布2022-06-22 18:29:54
2580
发布2022-06-22 18:29:54
举报

听人讲过一个故事 : 某优化团队准备招聘一个人,国内的面试已经基本通过了, 刚好国外的大老板到中国出差, 想亲自跟应聘者聊聊. 为了不让国外老板把好不容易找到的合适人选给否决, 国内的负责人特意嘱咐应聘者, 老板要是让你谈优化, 千万不要跟他提改参数优化的案例. 故事的结局是应聘失败, 中间过程你们自己脑补.

今天在某平台看到一篇名为<Oracle调优参数详解>的文章, 里面介绍了一些参数优化方法, 阅读次数超过了1500人次, 应该被很多人作为参考, 我来谈谈我的看法(带标号的截图是原文, 下面部分是我的观点).

tiger:

这个参数的默认值是300, 写成50应该是原作者的笔误. 正常情况, 一个session一般不会打开超过300个游标, 设置过大没有意义. 如果实际open_cursor数量超过了300, 非常有可能是出现了游标泄漏, 需要开发人员检查并修复代码,及时关闭游标. 如果设置很大,比如文章中的20000, 测试时很难发现游标泄漏这些问题, 会把隐患带到生产系统, 这种设置我认为不可取.设置成1000已经足够大了.

tiger:

上面两个参数的修改, 我在不少生产系统见过, 也遇到一些导致性能变差的案例, 有几个案例在我之前的公众号文章和培训课程里都有介绍,总结为一句话就是不要改这两个参数,保持默认值. 靠修改这两个参数,让优化器勉强使用一些低效索引, 可能适得其反. 正确的做法是深入了解索引, 创建高效索引.

tiger:

普通的RAC心跳网络, 可能千兆网居多,如果没有做好业务分区,节点之间数据交换会比较多, 修改这个参数确实没问题. 但是也不能一概而论, 如果是infiniband 网络(比如oracle 的Exadata), 而且是OLAP系统, 这个参数是没有必要修改的.

tiger:

上面参数出现了两次,都是建议改成16. 很多人把这个值改小, 也是为了让优化器倾向使用索引, 而不是全表扫描,官方文档也是这样说的,但官方文档没有建议修改(如果16是最佳, 那么默认参数就可能早就改成16了). oracle大量的性能测试, 都是使用的默认参数,如果修改了默认参数, 那么可选项就变多了, oracle不可能把各种非默认参数都做大规模的性能测试. 还是上面那句话, 尽量创建高效索引, 参数改小只是为了让优化器更容易选择低效索引, 而且这种改动还不利于全表扫描的情况(大部分系统都是OLTP和OLAP混合的).

tiger:

对于参数的解释没有问题, 但是为什么要取消资源管理器的使用呢? 该用的时候还是要用的, 设置不合适的地方可以调整, 而不是一禁了之.

补充:

还有很多人喜欢修改很多optimizer开头的优化器参数(包括_optimizer开头的隐含参数), 都是不建议的, 除非这些参数会导致大面积的bug. 大部分情况这些参数产生的bug也只会影响少量的特殊SQL, 对这些SQL做特殊处理就好了, 不建议在系统级修改这些默认参数.

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-17,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 老虎刘谈oracle性能优化 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com