1

我有一个小型应用程序,它读取 XML 文件并将信息插入 SQL DB。

有 ~ 300 000 个文件要导入,每个文件有 ~ 1000 条记录。

我在 20% 的文件上启动了应用程序,现在它已经运行了 18 个小时,我希望我可以改进其余文件的时间。

我没有使用多线程方法,但由于我正在运行该进程的计算机有 4 个内核,我正在考虑这样做以提高性能(尽管我猜主要问题是 I/O不仅是处理)。

我正在考虑在为每次插入创建的 SqlCommand 对象上使用 BeginExecutingNonQuery() 方法,但我不知道是否应该限制同时线程的最大数量(我也不知道该怎么做)。

对于获得最佳 CPU 利用率,您有什么建议?

谢谢

4

3 回答 3

2

如果我理解正确,您正在运行数据库的同一台机器上读取这些文件。虽然我对你的机器了解不多,但我敢打赌你的瓶颈是磁盘 IO。对我来说,这听起来并不十分计算密集。

于 2009-03-31T19:01:37.193 回答
0

查看批量插入

以用户指定的格式将数据文件导入数据库表或视图。

于 2009-03-31T18:55:14.947 回答
0

您是否尝试过使用SqlBulkCopy?基本上,您将数据加载到 DataTable 实例中,然后使用 SqlBulkCopy 类将其加载到 SQL Server。应该提供巨大的性能提升,而无需像使用 bcp 或其他实用程序那样对当前进程进行太多更改。

于 2009-03-31T18:59:44.297 回答