sql-server – 何时更新统计信息?

我继承了执行以下操作的维护计划:

>清理旧数据
>检查数据库完整性
>执行数据库和事务日志备份
>重组我们的索引
>更新统计数据
>删除旧备份和维护计划文件

在23分钟的维护计划中,更新统计数据需要大约13分钟.在这13分钟的时间内,阻止了对数据库的访问(或者至少暂停了从该数据库到我们其他数据库的复制).

我的问题是:

我们什么时候应该更新统计数据,为什么?

这似乎比我每天应该做的事情少.我试图让我们摆脱“仅仅因为”做不必要的维护的心态.

解决方法

如果您没有维护窗口,每天更新统计信息可能有点过分.特别是如果您为数据库启用了自动更新统计信息.在您的原始帖子中,您说由于此维护计划,用户正在看到性能下降.没有其他时间来执行此维护计划吗?没有其他窗口?我看到你的计划包含索引重组,你什么时候重建索引?当该操作发生时,统计信息会自动更新(假设索引没有关闭).

确切地说,更新统计信息的频率在很大程度上取决于索引和数据接收的数据修改量.如果对数据的修改(INSERT,UPDATE,DELETE)非常少,那么您可能会有更频繁的更新统计信息作业计划.

找出统计信息是否过时的一种方法是查看执行计划,如果估计的行与返回的实际行大不相同,那么这是一个很好的指示,需要提高间隔.在你的情况下,你会走另一条路,可能会为你做一些试验.每周更新一次统计数据,如果你开始看到陈旧数据的迹象,那么就从那里开始.

如果要对数据库使用自动更新统计信息,请参阅this reference获取更新统计信息的阈值.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...