我在 c# 中有一个程序,它使用 ExecuteNoneQuery 将 4,500,000 条记录插入到 sql 中并且插入时间太长我需要一种快速插入方法,最多需要大约 10 分钟,但是当我通过管理工作室将 4,500,000 条记录从另一个表插入我的表时,它需要3分钟
问问题
1393 次
2 回答
5
该类SqlBulkCopy
是为快速插入大量数据而设计的。
但是,您需要了解,在这种大小下,磁盘访问速度和网络延迟/带宽/饱和度会发挥作用。
您从另一个表填充一个表的示例在您在同一台机器上复制的这种情况下无效。
于 2012-05-26T09:11:54.487 回答
1
正如 Oded 已经说过的,这个起点是 SqlBulkCopy。但是,如果您可以控制数据库,您还应该检查数据库上的恢复模式是否设置为简单或“批量记录”。如果没有这个,您将在 SQL Server 创建日记帐分录时遭受重创。您还需要确保设置了 TableLock 的 SqlBulkCopyOptions。
这两个是直截了当的。使用 SqlBulCopy BatchSize 设置和事务模型(请参阅 UseInternalTransaction)也值得一试,但这些设置更难提供建议,因为不同场景的最佳设置可能完全不同。如果执行 TableLock 并检查恢复模型并不能完全达到您想要的速度,那么您可以开始使用 Batch Size,但它更像是一个灰色区域。
于 2012-05-26T11:39:46.287 回答