У меня есть 2 миллиона файлов XML, которые мне нужно проанализировать с помощью указанного оператора xpath и записать результат в таблицу базы данных.
Я установил следующий рабочий процесс:
Извлечение файла XML с дисков
Анализ в классе XMLDocument.
Анализ данных в классе DataTable в соответствии с предоставленным выражением XPath.
Очистка DataTable на сервер SQL через класс SqlBulkCopy
Эта рабочая операция выполняетсявыполняется через параллельный foreach.К сожалению, синтаксический анализ одного файла происходит очень быстро, поэтому проблема заключается в записи на SQL-сервер.Поэтому я подумал о том, чтобы собирать данные в памяти и очищать их только при достижении определенного порога.
Новая бутылочка - это сериализация, потому что я получаю все объекты DataTable, которые должны объединиться в больший.Конечно, это слияние должно быть поточно-ориентированным.Таким образом, я получаю одинаковую производительность, и все 8 ядер могут использоваться только на 35%.
Есть ли какая-нибудь идея, как увеличить производительность и увеличить нагрузку на процессор?