Оптимизация производительности репликации слиянием с помощью отслеживания условного удаления
При репликации слиянием можно указать, что удаления для одной или нескольких статей не должны отслеживаться триггерами репликации и системными таблицами. При задании этого параметра для статьи отслеживание удалений не производится, и удаления не реплицируются с издателя или с каких-либо подписчиков. Этот параметр предназначен для поддержки некоторых прикладных сценариев и для обеспечения оптимизации производительности в случаях, когда репликация удалений не нужна или нежелательна. Повышение производительности достигается тремя способами: метаданные для удалений не сохраняются; удаления не перечисляются во время синхронизации; удаления не реплицируются и не применяются на подписчике.
![]() |
---|
Для использования статей, доступных только для загрузки, уровень совместимости публикации должен быть, по меньшей мере, 90RTM. Дополнительные сведения см. в подразделе «Уровень совместимости для публикаций слиянием» раздела Использование нескольких версий SQL Server в топологии репликации. |
Этот параметр может быть указан при создании публикации, или он может включаться и выключаться, если для приложения необходимо, чтобы некоторые удаления реплицировались, а другие — нет, например пакетные удаления. В приводимых ниже примерах показаны способы использования этого параметра в приложении:
- В приложении для мобильных продавцов обычно имеются таблицы, такие как SalesOrderHeader, SalesOrderDetail и Product. Заказы вводятся на подписчике, а затем реплицируются на издателе, который часто предоставляет данные для системы выполнения заказов. Многие сотрудники на выезде используют портативные устройства, возможности хранения в которых ограничены: после получения заказа издателем заказ может быть удален на подписчике. Удаление не пересылается издателю, поскольку заказ все еще является активным в системе.
В этом сценарии для таблиц SalesOrderHeader и SalesOrderDetail отслеживание удалений не производится. Удаления отслеживаются для таблицы Product, поскольку при удалении продукта на издателе удаление должно быть отправлено подписчику для своевременного обновления списка продуктов. - Приложение может сохранять данные за длительный период времени в таблице, такой как TransactionHistory, из которой периодически удаляются записи со сроком хранения больше года. Эту таблицу можно фильтровать таким образом, чтобы подписчики получали только данные о транзакциях, выполненных в текущем месяце. Ежемесячные пакетные удаления на издателе, которые стирают старые данные, не имеют отношения к подписчикам, но по умолчанию они будут отслеживаться и перечисляться.
В этом сценарии перед выполнением пакетной обработки в системе могут быть приостановлены операции, и приложение может отключить отслеживание удалений. После завершения обработки можно вновь включить отслеживание.
![]() |
---|
Если на издателе продолжается выполнение других операций, необходимо обеспечить, чтобы удаления, которые должны распространяться на подписчики, не происходили при отключенном отслеживании удалений. |
Указание того, что удаления не должны отслеживаться
- Программирование репликации на Transact-SQL: How to: Specify that Deletes Should Not Be Tracked (Replication Transact-SQL Programming)
См. также
Основные понятия
Параметры статьи для репликации слиянием
Оптимизация производительности репликации слиянием при работе со статьями, доступными только для загрузки