我有200万个XML文件,需要通过指定的xpath语句进行解析并将结果写入数据库表中。
我建立了以下工作流程:
从磁盘中获取XML文件
解析为XMLDocument类。
根据提供的XPath表达式将数据解析为DataTable类。
通过SqlBulkCopy类将DataTable刷新到SQL Server
此工作流通过并行foreach执行。 不幸的是,一个文件的解析非常快,因此瓶颈显然是写入SQL Server。因此,我想到了收集内存中的数据并仅在达到特定阈值时才刷新它。
那么新的瓶颈就是序列化,因为我最终遇到了需要合并成更大对象的Mall DataTable对象。当然,此合并必须是线程安全的。因此,我最终得到了相同的吞吐量,而所有8个can内核仅使用了35%。
有什么想法可以使整个过程变得更多,并给CPU带来更多压力吗?