首页 > 解决方案 > 并行解析大量 XML 文件

问题描述

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

我建立了以下工作流程:

从磁盘获取 XML 文件

解析为 XMLDocument 类。

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

通过 SqlBulkCopy 类将 DataTable 刷新到 SQL 服务器

此工作流通过并行 foreach 执行。不幸的是,一个文件的解析速度非常快,因此瓶颈显然是写入 SQL 服务器。所以我考虑收集内存中的数据,只有在达到某个阈值时才刷新它。

新的瓶颈是序列化,因为我最终得到了需要合并成一个更大的数据表对象。当然,这种合并需要是线程安全的。所以我最终得到了相同的吞吐量,所有 8 个核心的使用率只有 35%。

是否有任何想法如何获得更多内容并更多地给 CPU 施加压力?

标签: c#databaseparallel-processingxml-parsingparallel.foreach

解决方案


推荐阅读