Читать данные SQL из нескольких потоков

У меня есть простая задача - прочитать данные из таблицы SQL, обработать их и, как только они будут завершены, обновить поле в БД (set processing =true), поэтому каждая запись должна обрабатываться только один раз.

Можете ли вы посоветовать мне, какую технику я могу использовать, чтобы сделать это многопоточным? Это значит, читать данные из таблицы в несколько потоков.

2 ответа

Решение

Если вы хотите читать данные в нескольких потоках, не перекрывая друг друга, вы можете попробовать подкачку страниц. Вы могли бы каждую ветку прочитать на другой странице. Например, первый поток мог бы прочитать первые 20 записей, обработать каждую из этих записей, а затем установить для каждой обработанной записи значение true, тогда как второй поток делает то же самое для следующих 20 записей и так далее.

Проверьте эту ссылку для получения дополнительной информации о подкачке в нескольких потоках. http://ericniemiec.wordpress.com/2010/06/10/paging-records-in-sql-server-2008-for-processing-database-records-on-different-threads-in-c/

Если вы используете ef и используете DataContext, вы должны знать, что DataContext не является потокобезопасным. Системы управления базами данных, такие как MsSQL, являются потокобезопасными. Я предпочитаю, чтобы вы прочитали этот вопрос

Другие вопросы по тегам