Назад | Перейти на главную страницу

Почему происходит задержка до того, как моя база данных реплик увидит вставки?

Я использую SQL Server 2005 Standard Edition. У меня есть основная БД и реплика только для чтения с настроенной репликацией транзакций. Насколько я понимаю, при репликации транзакций оператор INSERT не вернется до тех пор, пока

  1. Строка вставляется в первичный, а
  2. Строка полностью реплицирована в базу данных реплики.

Однако у меня возникла проблема, когда мы выполняем вставку, она возвращается (я знаю это, потому что я использую столбец идентификатора PK и у меня есть значение идентификатора). Затем я запускаю оператор SELECT в базе данных реплики, где пытаюсь найти строку по идентификатору, но она еще не существует. Если я подожду еще несколько секунд, все будет хорошо. Я не понимаю репликации транзакций? Есть ли способ заставить его работать так, как я думаю?

Ваше понимание неверно.

Репликация транзакций может иметь значительную задержку между фиксацией транзакций в базе данных публикации и применением к базам данных подписки.

Сначала записи журнала для подтвержденной транзакции собираются из журнала транзакций базы данных публикации (заданием агента чтения журнала) и (в основном) помещаются в базу данных распространителя. Затем задание агента распространения передает или извлекает изменения из базы данных распространителя в базу данных подписки.

В зависимости от рабочих нагрузок на этих трех машинах (если они разделены) и пропускной способности сети между ними, задержка может составлять секунды, минуты или больше.

Вы думаете о синхронном зеркальном отображении базы данных, когда транзакции не могут фиксироваться на главном сервере, пока все записи журнала для него не будут закреплены на диске журнала зеркальной базы данных. Репликация транзакций - это асинхронный процесс, который работает именно так, как должен.

Надеюсь это поможет.

Я думаю, вы ожидаете синхронного (зеркального) поведения от репликации.

Поведение репликации является асинхронным, и ваш подписчик может не сразу увидеть изменения.

Видеть: http://msdn.microsoft.com/en-us/library/ms151706.aspx

Изменить: в частности, в этом документе говорится о достижении в лучшем случае минимальной задержки при определенных конфигурациях, а не о синхронных фиксациях.