Я использую шаблон производителя/потребителя с поддержкой BlockingCollection, чтобы читать данные с файла, анализировать/преобразовывать, а затем вставлять в базу данных. Код, который у меня есть, очень похож на то, что можно найти здесь: http://dhruba.name/2012/10/09/concurrent-producer-consumer-pattern-using-csharp-4-0-blockingcollection-tasks/Как использовать многие потребительские потоки с помощью BlockingCollection
Однако основное отличие состоит в том, что мои потребительские потоки не только анализируют данные, но также вставляют их в базу данных. Этот бит медленный, и я думаю, что он блокирует потоки.
В примере есть две потребительские потоки. Мне интересно, есть ли способ увеличить количество потоков несколько разумным способом? Я подумал, что поток будет делать это, но не может понять, как это будет сделано.
В качестве альтернативы, как бы вы выбрали количество потребительских потоков? 2 не кажется правильным для меня, но я не уверен, что будет лучшим #. Мысли о лучшем способе выбора количества потребительских потоков?
Нитки не являются волшебным решением для каждой проблемы с перфорацией. Добавление большего количества стремится либо создавать только более ожидающие потоки, либо раздраженный администратор базы данных, который не любит, чтобы ваше приложение полностью зависало на сервере. –
Это приложение будет работать во время запланированного простоя, поэтому удача БД приемлема. Я просто хочу свести к минимуму время, когда оно падает. – Porco
Это связано с тем, что время простоя в полночь, и вы просто не хотите придерживаться этого долго, чтобы попробовать? –