我有一个小应用程序,它读取XML文件并在SQL DB上插入信息。
导入约300,000个文件,每个文件约有1000条记录。
我在20%的文件上启动了应用程序,现在已经运行了18个小时,我希望我可以为其余文件改进这段时间。
我没有使用多线程方法,但由于我正在运行该进程的计算机有4个核心,我正在考虑这样做以获得性能上的一些改进(尽管我猜主要的问题是I / O而不仅仅是处理)。
我正在考虑在每次插入时为我创建的SqlCommand对象使用BeginExecutingNonQuery()方法,但我不知道是否应该限制同时线程的最大数量(我也不知道该怎么做)。 / p>
您对获得最佳CPU利用率有何建议?
由于
答案 0 :(得分:2)
如果我理解正确,您正在运行数据库的同一台机器上读取这些文件。虽然我对你的机器了解不多,但我敢打赌你的瓶颈是磁盘IO。这对我来说听起来不是很严重。
答案 1 :(得分:0)
查看bulk insert。
以用户指定的格式将数据文件导入数据库表或视图。
答案 2 :(得分:0)
您是否尝试过使用SqlBulkCopy?基本上,您将数据加载到DataTable实例中,然后使用SqlBulkCopy类将其加载到SQL Server。应该提供巨大的性能提升,而不会像使用bcp或其他实用程序那样对当前进程进行太多更改。