Я бы хотел использовать многопоточность, когда мы записываем данные из базы данных в наши собственные объекты. В настоящее время мы используем Firebird и извлекаем данные, используя «только для чтения» FbDataReader.C# Многопоточный доступ к базе данных для Firebird (.NET)
Мы просматриваем записи, хранящиеся в FbDataReader, и заполняем объект, добавляя объект в список, который затем используется в приложении. Все это происходит на уровне доступа к данным нашего приложения.
В идеале мы хотели бы получить данные из базы данных (в FbDataReader), а затем разделить работу по записи объектов (по одной на строку) между потоками. Проблема, которую я вижу, заключается в том, что FbDataReader имеет только пересылку, а разные потоки могут заставить читателя выполнить следующую запись до того, как будет завершен другой поток.
Решение может заключаться в том, чтобы сбрасывать FbDataReader в индексированный список, массив или словарь, но это было бы дорого.
Есть ли у кого-нибудь идеи или мы просто тратим наше время на реорганизацию этой части нашего кода?
Я понимаю, что использование прямого курсора не может идти быстрее, чем одна строка за раз. Вот почему я предложил промежуточный шаг назначения всех данных индексированному массиву, списку или словарю, которые можно разделить между потоками. – Mysaffy
Простите за риторические вопросы; они не собирались оскорблять. Просто прислушаться ко всем остальным о том, чтобы вообще заглянуть в эту тему. Вы правы, очевидно, что вы понимаете необходимость посредников. –
Так задает вопрос. Как бы вы быстро сбросили FbDataReader в список, массив или словарь. Кажется, что нет способа ускорить этот процесс. Спасибо за ваш вклад до сих пор, его оценили. – Mysaffy