Репликация секционированных таблиц и индексов
Секционирование делает большие таблицы и индексы более управляемыми, так как позволяет быстро и эффективно получать доступ к подмножествам данных и управлять ими, при этом сохраняя целостность всей коллекции данных. Дополнительные сведения см. в разделе Секционированные таблицы и индексы. Репликация поддерживает секционирование, предоставляя набор свойств, которые указывают, как работать с секционированными таблицами и индексами.
Свойства статьи для репликации слиянием и репликации транзакций
В таблице перечислены объекты, применяемые для секционирования данных.
Объект |
Создан с помощью |
---|---|
Секционированная таблица или индекс |
CREATE TABLE или CREATE INDEX |
Функция секционирования |
CREATE PARTITION FUNCTION |
Схемы секционирования |
CREATE PARTITION SCHEME |
Первый набор свойств, связанных с секционированием, — параметры схемы статьи, определяющие, следует ли копировать секционирующие объекты на подписчик. Эти параметры схемы могут быть установлены следующими способами.
На странице Свойства статьи мастера создания публикаций или в диалоговом окне «Свойства публикации». Чтобы копировать объекты, перечисленные в предыдущей таблице, задайте значение true для свойств Копировать схемы секционирования таблиц и Копировать схемы секционирования индекса. Сведения о доступе к странице Свойства статьи см. в разделе Просмотр и изменение свойств публикации.
С помощью параметра schema_option одной из следующих хранимых процедур:
sp_addarticle или sp_changearticle для репликации транзакций;
sp_addmergearticle или sp_changemergearticle для репликации слиянием.
Чтобы копировать объекты, перечисленные в предыдущей таблице, выберите соответствующие значения параметров схемы. Дополнительные сведения об указании параметров схемы см. в разделе Указание параметров схемы.
Репликация копирует объекты на подписчик во время начальной синхронизации. Если схема секционирования использует файловые группы, отличные от PRIMARY, эти файловые группы должны существовать на подписчике до начальной синхронизации.
После инициализации подписчика изменения данных распространяются на подписчик и применяются к соответствующим секциям. Однако изменения схемы секционирования не поддерживаются. Репликация транзакций и репликация слиянием не поддерживают следующие команды: ALTER PARTITION FUNCTION, ALTER PARTITION SCHEME и инструкцию REBUILD WITH PARTITION команды ALTER INDEX. Репликация слиянием не поддерживает инструкции SWITCH PARTITION команды ALTER TABLE, но репликация транзакций ее поддерживает, как описано в следующем разделе.
Поддержка переключения секций при репликации
Одно из главных преимуществ секционирования — способность быстро и эффективно перемещать подмножества данных между секциями. Данные перемещаются командой SWITCH PARTITION. По умолчанию, если таблица включена для репликации, операции SWITCH PARTITION блокированы по следующим причинам.
Если данные перемещаются в таблицу или из таблицы, которая существует на издателе, но не на подписчике, издатель и подписчик могут оказаться несогласованными друг с другом. Эта проблема обычно возникает при перемещении данных в промежуточную таблицу или из нее.
Если определение секционированной таблицы отличается на подписчике и издателе, агент распространителя завершит свою работу ошибкой при попытке применить изменения на подписчике.
Несмотря на эти возможные проблемы, переключение секций можно включить при репликации транзакций. Прежде чем включить переключение секций, убедитесь, что все таблицы, участвующие в переключении секций, существуют на издателе и на подписчике и что определения таблиц и разделов совпадают.
Если все секции имеют одинаковую схему на издателях и подписчиках, можно включить параметр allow_partition_switch вместе с replication_partition_switch, что позволит выполнить репликацию только инструкции о смене секции для подписчика. Можно также включить параметр allow_partition_switch без репликации DDL. Это полезно, когда из раздела требуется убрать сведения за прошлые месяцы, однако сохранить реплицированную секцию в течение следующего года в целях резервного копирования на подписчике.
Внимание! |
---|
Не нужно включать переключения секций для одноранговых публикаций из-за наличия скрытых столбцов, используемых для обнаружения и разрешения конфликтов. |
Включение переключения секций
Следующие свойства публикации транзакций позволяют пользователям управлять переключением секций в реплицируемой среде.
@allow_partition_switch. Если его значение равно true, команду SWITCH PARTITION можно выполнять в базе данных публикации.
Свойство @replicate_partition_switch определяет, реплицировать ли инструкцию DDL SWITCH PARTITION на подписчик. Этот параметр доступен, если свойство @allow_partition_switch имеет значение true.
Эти свойства можно задать с помощью хранимой процедуры sp_addpublication при создании публикации или с помощью процедуры sp_changepublication после создания публикации. Как уже отмечалось, репликация слиянием не поддерживает переключение секций. Чтобы выполнить команду SWITCH PARTITION для таблицы, для которой включена репликация слиянием, удалите эту таблицу из публикации.