并行解析许多XML文件

时间:2019-01-31 16:10:30

标签: c# database parallel-processing xml-parsing parallel.foreach

我有200万个XML文件,需要通过指定的xpath语句进行解析并将结果写入数据库表中。

我建立了以下工作流程:

从磁盘中获取XML文件

解析为XMLDocument类。

根据提供的XPath表达式将数据解析为DataTable类。

通过SqlBulkCopy类将DataTable刷新到SQL Server

此工作流通过并行foreach执行。 不幸的是,一个文件的解析非常快,因此瓶颈显然是写入SQL Server。因此,我想到了收集内存中的数据并仅在达到特定阈值时才刷新它。

那么新的瓶颈就是序列化,因为我最终遇到了需要合并成更大对象的Mall DataTable对象。当然,此合并必须是线程安全的。因此,我最终得到了相同的吞吐量,而所有8个can内核仅使用了35%。

有什么想法可以使整个过程变得更多,并给CPU带来更多压力吗?

0 个答案:

没有答案