c# - 并行解析大量 XML 文件
问题描述
我有 200 万个 XML 文件,需要通过指定的 xpath 语句解析并将结果写入数据库表。
我建立了以下工作流程:
从磁盘获取 XML 文件
解析为 XMLDocument 类。
根据提供的 XPath 表达式将数据解析为 DataTable 类。
通过 SqlBulkCopy 类将 DataTable 刷新到 SQL 服务器
此工作流通过并行 foreach 执行。不幸的是,一个文件的解析速度非常快,因此瓶颈显然是写入 SQL 服务器。所以我考虑收集内存中的数据,只有在达到某个阈值时才刷新它。
新的瓶颈是序列化,因为我最终得到了需要合并成一个更大的数据表对象。当然,这种合并需要是线程安全的。所以我最终得到了相同的吞吐量,所有 8 个核心的使用率只有 35%。
是否有任何想法如何获得更多内容并更多地给 CPU 施加压力?
解决方案
推荐阅读
- javascript - 必须在 for 循环中初始化正则表达式
- c# - 使用资产包在统一 webgl 中加载/卸载巨大的世界
- javascript - 将字符串转换为 json 对象
- ios - 突然 fcm 通知在某些 iOS 设备上不起作用
- youtube-api - Youtube API 视频列表返回的结果少于指示的结果
- php - PHP:仅当文件以逗号结尾时才将文件分成几行
- spring - 为什么大多数人为了创建服务而创建接口?
- java - 根据实时 Firebase lat 和 lang 值更改标记位置
- msbuild - 如何解决 sonarqube 中的代码行限制问题?
- kubernetes - Pod 状态失败的原因