Разбор большого количества XML-файлов параллельно - PullRequest
0 голосов
/ 31 января 2019

У меня есть 2 миллиона файлов XML, которые мне нужно проанализировать с помощью указанного оператора xpath и записать результат в таблицу базы данных.

Я установил следующий рабочий процесс:

Извлечение файла XML с дисков

Анализ в классе XMLDocument.

Анализ данных в классе DataTable в соответствии с предоставленным выражением XPath.

Очистка DataTable на сервер SQL через класс SqlBulkCopy

Эта рабочая операция выполняетсявыполняется через параллельный foreach.К сожалению, синтаксический анализ одного файла происходит очень быстро, поэтому проблема заключается в записи на SQL-сервер.Поэтому я подумал о том, чтобы собирать данные в памяти и очищать их только при достижении определенного порога.

Новая бутылочка - это сериализация, потому что я получаю все объекты DataTable, которые должны объединиться в больший.Конечно, это слияние должно быть поточно-ориентированным.Таким образом, я получаю одинаковую производительность, и все 8 ядер могут использоваться только на 35%.

Есть ли какая-нибудь идея, как увеличить производительность и увеличить нагрузку на процессор?

...