Транзакция SQL по своей природе является ACID.В частности, именно «я» причиняет вам боль - это , предназначенное , чтобы другие соединения не видели несовместимое промежуточное состояние.
Отдельное соединение для чтения может выбрать игнорирование этого правила.с помощью подсказки NOLOCK
или уровня изоляции READ UNCOMMITTED
, но, похоже, вы хотите, чтобы соединение write не блокировало.Что ж, этого не произойдет.
Тем не менее, может помочь читателям использовать snapshot изоляцию, которая обеспечивает изоляцию без блокировки считывателя (взглянув, как следует из названия, на мгновение shapshot согласованного состояния, когда транзакция началась).
Однако, IMO, вам лучше посоветовать:
- множественные, более детальные транзакции от писателя
- , выполняющего работу в промежуточной таблице (параллельная копия данных), затем объединяющей ее в реальных данных внесколько операций массовой вставки / обновления / удаления, минимизирующих время транзакции
Первое проще.
Простой факт: если вы берете длительную транзакцию, которая работает намного данных, да Вы будете вызывать проблемы.Вот почему вы не делаете этого .Система работает правильно.