Где Merge Replication на самом деле хранит данные? - PullRequest
0 голосов
/ 29 мая 2018

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

Пожалуйста, кто-нибудь может дать мне понять?Если он хранит транзакции - есть ли в MSMerge_contents какая-либо ссылка на соответствующую транзакцию?Почему он фильтрует вставки / обновления / удаления, как сказано здесь ?

Если он не реплицирует транзакции, где он хранит фактические данные для репликации?

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

Триггеры таблиц (триггеры MSmerge) преобразуют каждую транзакцию в информацию инкрементной генерации и сохраняют эту информацию в таблицах системных метаданных MSmerge_contents, MSmerge_tombstone иMSmerge_genhistory, где вы можете объединить каждую таблицу с помощью tablenick и использовать столбец rowguid для поиска строки (для MSmerge_contents и MSmerge_tombstone).

Агент репликации сравнивает содержимое MSmerge_contents для издателя и подписчика, копирует новые строки и изменяет существующие в зависимости от столбца rowguid и номера генерации каждой строки.Он использует фактические строки в реальных таблицах, соединяясь по rowguid.То же самое для таблицы MSmerge_tombstone.

Он не использует журнал транзакций.Он также даже не имеет активной программы чтения журнала.

1 Ответ

0 голосов
/ 29 мая 2018

Слияние репликации или, в этом отношении, любой тип репликации всегда начинается с начального шага инициализации моментального снимка. На издателе создается моментальный снимок всех данных и объектов и отправляется всем подписчикам.(На этом этапе фактические данные перемещаются из издателя в подписчик (и)).

Транзакционная репликация

После того, как начальный моментальный снимок был доставлен подписчикам, для транзакционныхРепликация SQL Server считывает журналы транзакций с издателя и передает их распространителю и отправляет (или подписчик получает, в зависимости от типа подписчика) журналы всем подписчикам.Эти журналы воспроизводятся на подписчиках через триггеры и некоторые таблицы метаданных.

Репликация слиянием

Как только первоначальный моментальный снимок был доставлен подписчикам в репликации слиянием, SQL Server начинает читать журналы транзакций от издателя и от всех подписчиков.и отправьте их агенту слияния (этот агент относится только к репликации слиянием, он не существует ни в каком другом типе репликации), агент слияния использует определенный алгоритм для сортировки порядка, в котором применяются операции вставки / обновления / удаления(Обычно сначала выполняются операции удаления, а затем применяются обновления и, наконец, вставки) ко всем участвующим подписчикам и издателю. После того, как агент слияния отсортировал порядок, журналы ставятся в очередь на распределителе, как в репликации транзакций, и передаются / выталкиваютсяабонентов.

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

...