Оптимизация производительности репликации слиянием с помощью отслеживания условного удаления
Область применения: SQL Server
Примечание.
Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.
При репликации слиянием можно указать, что удаления для одной или нескольких статей не должны отслеживаться триггерами репликации и системными таблицами. При задании этого параметра для статьи отслеживание удалений не производится, и удаления не реплицируются с издателя или с каких-либо подписчиков. Этот параметр предназначен для поддержки некоторых прикладных сценариев и для обеспечения оптимизации производительности в случаях, когда репликация удалений не нужна или нежелательна. Повышение производительности достигается тремя способами: метаданные для удалений не сохраняются; удаления не перечисляются во время синхронизации; удаления не реплицируются и не применяются на подписчике.
Примечание.
Для использования статей, доступных только для загрузки, уровень совместимости публикации должен быть не менее 90RTM.
Этот параметр может быть указан при создании публикации, или он может включаться и выключаться, если для приложения необходимо, чтобы некоторые удаления реплицировались, а другие — нет, например пакетные удаления. В приводимых ниже примерах показаны способы использования этого параметра в приложении:
В приложении для мобильных продавцов обычно имеются таблицы, такие как SalesOrderHeader, SalesOrderDetail и Product. Заказы вводятся на подписчике, а затем реплицируются на издателе, который часто предоставляет данные для системы выполнения заказов. Многие сотрудники на выезде используют портативные устройства, возможности хранения в которых ограничены: после получения заказа издателем заказ может быть удален на подписчике. Удаление не пересылается издателю, поскольку заказ все еще является активным в системе.
В этом сценарии для таблиц SalesOrderHeader и SalesOrderDetail отслеживание удалений не производится. Удаления отслеживаются для таблицы Product , поскольку при удалении продукта на издателе удаление должно быть отправлено подписчику для своевременного обновления списка продуктов.
Приложение может сохранять данные за длительный период времени в таблице, такой как TransactionHistory, из которой периодически удаляются записи со сроком хранения больше года. Эту таблицу можно фильтровать таким образом, чтобы подписчики получали только данные о транзакциях, выполненных в текущем месяце. Ежемесячные пакетные удаления на издателе, которые стирают старые данные, не имеют отношения к подписчикам, но по умолчанию они будут отслеживаться и перечисляться.
В этом сценарии перед выполнением пакетной обработки в системе могут быть приостановлены операции, и приложение может отключить отслеживание удалений. После завершения обработки можно вновь включить отслеживание.
Внимание
Если на издателе продолжается выполнение других операций, необходимо обеспечить, чтобы удаления, которые должны распространяться на подписчики, не происходили при отключенном отслеживании удалений.
Указание того, что удаления не должны отслеживаться
- Программирование Репликации Transact-SQL: указание свойств репликации слиянием