如何使用 C# 快速将 4,500,000 条记录插入 SQL Server 数据库

本文关键字:记录 插入 SQL 数据库 Server 何使用 | 更新日期: 2023-09-27 18:35:28

我有一个 c# 程序,它使用 ExecuteNoneQuery 将 4,500,000 条记录插入到 sql 中并且插入时间太长我需要一种快速的插入方法,最多需要大约 10 分钟,但是当我通过管理工作室将 4,500,000 条记录从另一个表插入到我的表中时,需要 3 分钟

如何使用 C# 快速将 4,500,000 条记录插入 SQL Server 数据库

SqlBulkCopy类设计用于快速插入大型数据集。

但是,您需要了解,在这种大小下,磁盘访问速度和网络延迟/带宽/饱和度就会发挥作用。

从另一个表填充一个表的示例在同一台计算机上复制的情况下无效。

正如Oded已经说过的,这样做的起点是SqlBulkCopy。 但是,如果您可以控制数据库,则还应检查数据库上的恢复模式是否设置为"简单"或"大容量日志"。 如果没有这个,SQL Server创建日志条目将受到沉重打击。 您还需要确保设置了 TableLock 的 SqlBulkCopyOptions。

这两个是直截了当的。 使用SqlBulCopy BatchSize设置和事务模型(请参阅UseInternalTransaction)也是值得的,但这些设置很难给出建议,因为对于不同的方案,最佳设置可能完全不同。 如果执行 TableLock 并检查恢复模式并不能完全获得您想要的速度,那么您可以开始使用批量大小,但它更像是一个灰色区域。