【问题标题】:dropping filtered statistics causes deadlocks删除过滤的统计信息会导致死锁
【发布时间】:2013-10-04 08:55:24
【问题描述】:

我们有一个大型数据仓库数据库,我们不断地在 5 个不同的表中插入新行,位于 b 树的左侧(编辑:右侧)(=在表的末尾)

这意味着对于新数据,普通统计数据很快就会过时。 所以我们改变了我们的插入过程来做一个 CREATE STATISTICS FST_xxx 带有覆盖最新两百万行的 WHERE 子句。

这确保了我们不会得到错误的执行计划。 现在我们被数百个这样的人困住了。 我们有一个每天运行一次的清理作业,它会删除不需要的统计信息。

但这会导致很多死锁。

有没有办法在不导致死锁的情况下禁用过滤统计信息或删除过滤统计信息?

(编辑:)该表聚集在 Bigint Identity(1,1) asending 上。

【问题讨论】:

    标签: sql sql-server sql-server-2012 table-statistics filtered-statistics


    【解决方案1】:

    您能否说明插入行的位置?您说的是 b-tree 的左侧,但您也说的是表的末尾。假设这是您正在谈论的聚集索引是否正确?而不管是否聚集,索引键是升序的吗?谢谢。

    【讨论】:

    【解决方案2】:

    为什么不尝试更新统计信息而不是每次都创建一个新统计信息?

    【讨论】:

    • 表很大,提取需要相当长的时间,并且会产生很多额外的I/O
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多