是否应该在所有数据库上启用查询存储?

Dan*_*vey 5 sql-server query-store

我们使用的是 SQL Server 2016 标准版 (SP2-CU2)。我们有几台服务器,每台服务器托管几十到数百个数据库。我们从未在我们的数据库上启用查询存储。

我知道打开查询存储进行调优有很多好处。我想知道,是否有任何情况下,当查询储存应该被打开?或者我应该在所有数据库上打开它?


已编辑

以防万一它可以帮助其他人。我最终所做的是每天启用查询存储几个数据库并进行监控。到目前为止,我已经在几乎所有的数据库上启用了查询存储,而没有任何性能影响。事实证明,它在调查问题时很有用。

Ton*_*kle 7

所以你真的有两个问题:

  1. 是否存在不应启用查询存储的情况?

根据一些关于启用查询存储时现场出现重大性能问题的报告(尽管它们非常罕见),人们可能会推断您不应在会导致重大性能问题的数据库上启用查询存储。

当然,您确定它是否会导致性能问题的唯一方法是研究所有已知问题,确保它们都不会影响您的系统,然后启用它——但您仍然不知道是否它会导致性能问题,直到您启用它。例如,请参阅修复:启用查询存储时 SQL Server 2016 性能下降。请注意,启用或更改查询存储中的设置也可以刷新计划缓存

其次,如果您不打算使用它提供的信息和功能来提高在您的服务器上运行的查询的性能,那么您不应该启用它。某些环境,尤其是大型、受严格监管的组织,可能具有如此严格的变更控制,以至于您实际上无法使用查询存储做任何事情。

  1. 我应该在所有数据库上打开它吗?

我当然不会同时在数百个数据库上启用它,因为可能会导致很多问题并且有太多数据需要分析。如果您的环境可以使用查询存储来提高性能,那么我建议一次启用几个数据库。

如果您有数百个数据库,您可能没有人员来分析所有信息,因此定期在几台服务器上启用它可能是有意义的,看看是否有任何改进,然后禁用它并在其他一些服务器上使用它一段时间。或者,当发生应用程序升级时,将其启用一段时间以查看新代码是否触发了 Query Store 可以提供帮助的任何内容。