D-K*_*D-K 6 sql-server ssis hibernate sql-server-2016 performance-tuning
是否OPTION (RECOMPILE)
用于生产?
这个选项似乎受到了很多负面报道。值得吗?
我有一个 DBA,到目前为止,他不喜欢OPTION (RECOMPILE)
Report ETL ssis 代理查询的核心思想。这些查询(据我所知)按计划的时间间隔按顺序执行。
回溯历史:
等等,你确定 OPTION (RECOMPILE) 是答案吗?
我所知道的风险:
因此,鉴于上述情况 - 该选项是否在现实世界中实际使用?我推荐(并测试)它作为生产环境的一个选项是否可以接受?
我被要求提供更多细节。我提到我确实有其他与此主题相关的帖子。让我提供更多信息:
serializable
在休眠层内;我了解到,这对于大批量生产环境来说并不是最佳选择。让我分享其他问题:
Dan*_*man 20
OPTION(RECOMPILE)
用于实词生产场景。我用它来解决参数嗅探和优化厨房水槽查询。它可能是您问题的答案,但症状表明OPTIMIZE FOR UNKNOWN
(与局部变量相同)也可以解决问题。
我当然不会仅仅因为曾经存在一个错误而避免选择一个选项,并且它在几年前就已修复。主要风险OPTION(RECOMPILE)
是使用不当,例如高频查询。
Dav*_*oft 12
是的。OPTION RECOMPILE 适用于查询成本因参数值而显着变化的高成本/低频查询。作为替代方案,请考虑使用Query Store,您可以在其中强制制定一个好的计划。
正如专家所提到的,OPTION (RECOMPILE)
生产代码中的查询提示肯定有有效的用例。它通常不是唯一或最好的解决方案,如果使用不当,可能会使您的性能问题变得更糟,尤其是在高频查询中。
话虽如此,相反,有时在某些情况下,除了查询提示之外没有其他修复方法,OPTION (RECOMPILE)
并且它是性能问题的解决方案。我们不能说您的 SSIS 查询是否是一个没有更多细节的例子,但只是我想为您的 DBA 抛出的一般想法,因为就像西斯一样,处理绝对值是不好的。
如果您遇到唯一的解决方案是OPTION (RECOMPILE)
,我很好奇您的 DBA 对如何解决问题的回应。此外,您应该询问您的 DBA,他对无需测试即可解决此问题的想法是什么OPTION (RECOMPILE)
。因为通常它是一个低风险的测试,如果它对性能的影响大于它的帮助,可以很容易地删除它。当没有时间解决根本问题时,我什至发现它对性能绑定很有帮助,因此它在此期间获得了喘息空间。
长话短说,查询提示因有风险而臭名昭著,因为人们错误地使用了它们的历史。但它们存在是有原因的,当它们是正确工作的正确工具时。OPTION (RECOMPILE)
在密切监视下使用的风险很低,在某些情况下甚至是唯一的解决方案。