Alter Index Organize 是不是会导致统计数据过时?

Posted

技术标签:

【中文标题】Alter Index Organize 是不是会导致统计数据过时?【英文标题】:Does Alter Index Reorganise cause Out dated statistics?Alter Index Organize 是否会导致统计数据过时? 【发布时间】:2015-12-17 22:08:40 【问题描述】:

我已阅读多篇文章并了解基于 BOL 的重组不会更新统计信息,因为数据分布没有改变。我们过去每天晚上都进行索引重建,直到速度太慢,有时会进行索引重建,有时会进行索引重组(我称之为智能重建索引)。突然间,在更改 6 个月后,我接到一个电话,说您的查询有问题……经过数小时的分析,我终于发现问题是由于过时的统计数据造成的。以前从未遇到过这个问题,因为索引的重建等同于使用全扫描的统计更新。

我的理论,如果我错了,请纠正我,如果每晚运行智能重新索引(基于最佳实践 = 在 > 30% 碎片时重建和在 5 到 30% 碎片之间重组),它可能第一次左右重建索引,然后永远重新组织,因为夜间进程将在重新组织中捕获它并且永远不会有机会重建......因此永远不会更新统计信息?

因此,如果我有一个包含 1000 万行的表,我将不得不等到 200 万行被修改后才开始更新统计信息,并且永远不会重建索引?!?!?

我是正确的还是错误的?

【问题讨论】:

【参考方案1】:

不是重组导致统计数据陈旧,而是您过去所做的重建保持新鲜。

在“病态”的情况下,只有一页不适合重组移动。读取一页不足以获得准确的直方图,因此 SQL 不会免费为您提供统计更新。

将其与重建进行对比。由于它必须读取(和写入)每一页,SQL 开发人员说“哦,嘿……还不如免费更新统计数据!”。

最后,您不必依赖自动更新机制来启动;您可以发出手动update statistics 声明。当我在这里的时候,我不妨为 Old Hallengren 编写的免费脚本背书。附带的索引维护程序也将进行统计维护。我在使用它时运气不错。

【讨论】:

在过去几个小时的经历之后,我一定会研究维护脚本来更新统计信息。但我正在争论我是应该按时(每月一次)还是在同一个智能重新索引维护过程中,每次重组完成。 我讨厌退出“取决于”的旧 DBA 响应,但确实如此。具体来说,关于“不良”统计数据是否会对您的查询质量产生重大影响,以及统计数据更新是否会显着改变直方图。我敢肯定还有其他一些我没有想到的因素(这是这样一个社区网站的美妙之处——我相信其他人会加入到对话中)。

以上是关于Alter Index Organize 是不是会导致统计数据过时?的主要内容,如果未能解决你的问题,请参考以下文章

ALTER SCHEMA NAME 是不是会影响对 Redshift 中架构的权限授予

python organize-photos.py

Intellij IDEA Organize Imports

Intellij IDEA Organize Imports

[tmux] Organize your terminal using tmux panes

如何配置 VSCode 的 Organize Imports 顺序?