SQL Server 重新排列索引时,表中的大量插入/更新会导致超时

SQL Server 重新排列索引时,表中的大量插入/更新会导致超时

我们使用 SSIS 插入/删除了两百万行表中的大约一百万行。

该表上有 20 个索引。

SSIS 完成后,我们遇到了前端超时问题。超时问题最终会消失。

我怀疑索引在重新重组期间导致了这个问题。

我们可以做什么?

答案1

索引随着数据的更新而更新,索引更新是同步的。

现在更新统计信息是一个异步操作。数据更新完成后,手动对相关表进行更新统计信息。

答案2

通过更新表中超过 20% 的行,您将触发统计数据更新。

SQL Server 的默认行为是同步执行此操作。这意味着如果受影响的索引在执行计划中使用,优化器会注意到统计数据已过期,立即强制更新并重新编译执行计划。

SQL Server 2005 中有一个新功能,可以使数据库的统计信息更新异步,即优化器将使用过时的统计信息,但在后台运行统计信息更新,以便下一个查询可以利用新的统计信息。命令AUTO_UPDATE_STATISTICS_ASYNC ON 如下鲍尔了解更多信息。

另一种方法是,在加载后手动强制更新表。您可以使用命令执行此UPDATE STATISTICS操作。以下是鲍尔参考。

答案3

如果您在 SSIS 中使用批量插入任务,则可以尝试设置批量大小,这会将其分解为中间有提交的较小块。

相关内容