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

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

我们在这张桌上有20个索引

在SSIS结束后,我们在前端遇到超时。 超时最终消失。

我怀疑这些索引是在重组的时候造成的。

我们可以做什么?

谢谢

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

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

通过更新表中超过20%的行,您正在触发统计信息更新。

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

在SQL Server 2005中有一个新function可以使数据库的统计更新asynchronous,即优化器将使用陈旧的统计信息,但在后台运行统计信息更新,以便下一个查询利用新的统计信息。 该命令是AUTO_UPDATE_STATISTICS_ASYNC ON请参阅BOL以获取更多信息。

已经build议的替代方法是在加载后手动强制更新表格。 你可以用UPDATE STATISTICS命令来做到这一点。 这是BOL参考。

如果你在SSIS中使用大容量插入任务,你可以尝试设置批量大小,这将把它分成更小的块,并提交之间的提交。