Краткие рекомендации по настройке и оптимизации репликации транзакций
Страница 11. Использование параллельных процессов для генерации снимка


 

Использование параллельных процессов для генерации снимка

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

Когда Вы создаете новую публикацию, используя репликацию транзакций и указываете, что все подписчики будут работать под управление SQL Server 7.0 или SQL Server 2000, только тогда возможно будет использовать параллельные процессы для генерации файлов снимка.

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

После окончание генерации снимка, происходит вторая запись в журнал, показывающая время окончания генерации снимка. Любые транзакции, изменившие данные в публицируемых таблицах и успешно завершенные в указанный промежуток времени, считываются Log Reader и записываются в базу распределения. Когда снимок применяется на подписчике, Distribution-агент сначала применяет файлы снимка (схема и данные). Затем, для согласования данных каждой завершенной транзакции, идет проверка, применялась ли данная транзакция на подписчике. Во время процесса согласования данных, таблицы на Подписчике блокируются, транзакции ожидают освобождения блокировки и будут применены на Подписчике только после освобождения таблиц.

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

Для SQL Server 2000 использование параллельных процессов генерации файлов снимков не рекомендуется, если публицируемая таблица имеет уникальный индекс без первичного ключа или кластерного. Если изменения данных затрагивают кластерный ключ, когда начался параллельный процесс генерации снимка, репликация может обвалиться с ошибкой "duplicate key".

 
« Предыдущая статья   Следующая статья »