【问题标题】:Recompilation of query plan重新编译查询计划
【发布时间】:2019-07-10 06:58:37
【问题描述】:

我们最近在生产环境中发布了一个新的索引视图,以帮助提高特定查询的性能,尽管性能已显着提高,但我们注意到服务调用有时会花费长达一秒钟的时间。

我做了一些调查,发现执行服务调用需要一秒钟时间的实例与查询计划的编译相吻合。一旦我知道我对其进行了监控,并且可以看到由于更新的统计信息而正在重新编译它。

此表中的数据不断变化,因此我希望在启用自动创建统计信息时会更新统计信息,但我只是想知道人们在这种情况下会做什么。是 KEEPFIXED PLAN 之类的查询提示(在我的情况下不可能)还是计划指南有帮助?

这不是一个大问题,因为我们会看到每分钟有大量调用,其中一些会受到重新编译的影响。更多的是出于好奇。

【问题讨论】:

    标签: sql-server tsql sql-server-2012


    【解决方案1】:

    我会启用异步统计更新并查看行为是否仍然存在

    https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-set-options?view=sql-server-2017#auto_update_statistics_async

    启用此选项后,优化器不会在编译计划之前等待统计信息更新。缺点是您可能会使用过期统计信息生成的计划执行查询

    【讨论】:

    • 感谢您的建议。我会调查一下。
    猜你喜欢
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多