Партия
- читать текст из файла или SQL
- разобрать текст на слова
- загрузить слова в SQL
Сегодня
.NET 4.0
Шаг 1 выполняется очень быстро. Шаги 2 и 3 имеют примерно одинаковую длину (в среднем 0,1 секунды) для файла одинакового размера.
На шаге 3 вставьте с помощью BackGroundWorker и дождитесь завершения последнего.
Все остальное выполняется в основном потоке.
При большой нагрузке сделает это несколько миллионов раз.
Необходимо, чтобы шаг 3 был последовательным и в том же порядке, что и шаг 1.
Это нужно для того, чтобы предотвратить разбиение индекса PK таблицы SQL.
Пробовал выполнять шаг 3 параллельно, и разбиение индекса убило его.
Эти данные Feed отсортирован по PK.
Другие индексы удаляются в начале загрузки, а затем перестраиваются в конце загрузки.
Этот процесс неэффективен, когда размер текста меняется.
И размер текста от файла к файлу действительно резко меняется.
Я бы хотел поставить в очередь 1 и 2, чтобы 3 оставался занятым. насколько это возможно.
Нужен шаг 3, чтобы удалить файлы из очереди, чтобы они были поставлены в очередь в 1 (даже если он ждет).
Нужен максимальный размер очереди для управления памятью (например, 4-10).
Хотел бы иметь шаг 2 параллельно с до 4 одновременных.
Переход на .NET 4.5.
Просить общего руководства о том, как это реализовать?
Я узнаю, что это шаблон производителя-потребителя.
Если это не шаблон производителя-потребителя, сообщите мне, чтобы я мог изменить название.
files.AsParallel().AsOrdered()
? - person Dax Fohl   schedule 16.10.2012