在截断超过600万行的表后,看到插入/选择的速度很慢。
我每天在表格中插入5到6百万条记录,我能够在7或8天内插入/选择数据而没有任何问题,但当表格大小超过10 GB / 3千万行时,有一些超时问题。
所以我想在数据上传之前每天截断表格,因为1天的数据对我来说已经足够了。现在我看到插入/选择极端缓慢,直到我在上传中间重建索引。过去2天,在索引重建后,花费了5个小时来插入100万行,剩余的350到400万行在不到15分钟的时间内进入表格。我不喜欢在上传过程中重建索引。
我没有进行.NET批量插入,我使用存储过程批量插入行,因为我做了一些验证。
我正在使用SQL Server 2008。
答案 0 :(得分:0)
启用自动统计更新后,每件事情都正常。从现在开始截断大表后,如果禁用数据库自动统计更新,我将确保更新表统计信息。感谢每一个人提供的所有宝贵建议。
答案 1 :(得分:-1)
我建议您删除索引,当您截断表时,一旦数据加载到表中,然后继续创建索引,这至少会在一定程度上解决问题。
根据给定的信息,我不确定您使用什么实用程序将行加载到表中,
如果您使用BCP,那么请将批量大小提到适当的值,因为进入一个单一交易的600万条记录将创建一个非常大的交易,而不是您可以创建50,000的批量大小,如果有任何批次然后失败然后在再次加载之前截断整个表。
有关批量大小的更多信息,请转到页面(-b选项) http://msdn.microsoft.com/en-us/library/ms162802.aspx
答案 2 :(得分:-2)
确保更新所有索引的统计信息......缩小日志文件可能不会有什么坏处。有关于如何在互联网上做这两件事的文章。但这是我对正在发生的事情的最好猜测。