У меня есть вопрос о том, как обрабатывать SQL-запросы к таблице при выполнении пакетных вставок в ту же таблицу.
У меня есть веб-приложение ASP.NET, которое создает множество объектов (возможно, 50000), которые вставляются пакетным способом в таблицу с использованием nHibernate. Даже при использовании оптимизаций Nhibernate это занимает до двух минут. Я выполняю это в транзакции базы данных с уровнем изоляции, установленным для чтения совершенного.
Во время пакетной вставки клиенты в веб-приложении должны иметь возможность читать ранее созданные данные в этой таблице. Однако они не должны иметь возможность читать незафиксированные данные. Моя проблема заключается в том, что если я использую уровень изоляции «чтение зафиксировано» в запросах на выборку, они истекают из-за ожидания завершения задания пакетной вставки.
Есть ли способ выполнить запрос к базе данных таким образом, чтобы запрос выполнялся быстро и возвращал все зафиксированные строки в таблице, не ожидая завершения задания пакетной вставки? Я не хочу возвращать незафиксированные данные.
Я проверил настройку уровня изоляции на «снимок», и это, похоже, решило мою проблему, но лучше ли это?
С уважением, Причудливый