什么是为Oracle设置优化器索引成本调整参数的正确方法。 作为一名开发人员,随着此参数降低,我观察到了巨大的性能提升。 常见查询从2秒减less到200毫秒。 在networking上有很多警告,降低这个值会导致数据库的严重问题,但是没有给出关于什么会出错的细节。
我目前只看到了一个上升的,应用程序性能大大提高,没有下降。 我需要更好地了解调整这些参数可能产生的负面影响。
不推荐改变这个参数的原因是它们对优化器有全db的影响 – 所以当你改变它来调整一个特定的查询时,它可能会对许多其他查询产生一些影响。 所以,如果不仔细testing整个应用程序,在生产环境中进行更改就很危险
然而:
如果你想同时使用系统统计信息和优化器参数,可以将其logging下来,乔纳森·刘易斯(Jonathan Lewis)写道(抱歉,该网站不允许发布多个链接)
我希望有帮助
在生产环境中不应更改参数。 主要用途是强制更改计划,以validation不同执行计划的执行情况。 基本上你build议优化器,你的数据库中的所有索引比其他访问path更便宜。 对于某些sql可能是这样,对于其他的可能是错误的。
一旦你有一个良好的性能计划,你应该明白为什么优化器不使用它,并试图修复(即没有新鲜/准确的静态可用 – >收集新的,更准确的统计)。
希望这有助于,斯特凡诺
OLTP系统是最常见的数据库types,这两个参数的默认值是可怕的。 他们导致更多的全表扫描和坏的查询。 一般来说,你想在你上线之前设置这些参数。 你在testing阶段做。
如果您在上线后更改它们,则可能会更改其他被调整为错误设置的查询。 这听起来像你不知道关于数据库调优很多,因为你提到响应时间,而不是查询计划。 你不应该触摸这些参数。
大多数DBA不了解修复和devise之间的概念差异。 你活着后,你正在修复,那就是当你需要小心改变这些参数。 在你生活之前,你正处于devise和开发阶段。 那就是当你像这样调整参数的时候。
顺便说一句,这是一个很好的开始使用这些参数的地方(注意在你开始生产之前,如果你知道你正在做什么!)
optimizer_index_cost_adj = 10优化器caching= 90
这是为OLTPs。 对于批处理,你想要开始的设置是非常不同的。 我稍微鼓励了这些,但这些设置在OLTP上99%的时间给了我最好的总体结果。 但是,在我们投入生产之后,我不会去碰它们。 如果他们不好,我会让他们不好,并调整查询。