利用执行SQL语句的多个核心

时间:2009-03-31 18:51:08

标签: sql insert parallel-processing

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

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

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

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

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

您对获得最佳CPU利用率有何建议?

由于

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

查看bulk insert

  

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

答案 2 :(得分:0)

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