Ускорение репликации моментальных снимков MSSQL в реплику SQLExpress

Ускорение репликации моментальных снимков MSSQL в реплику SQLExpress

У меня есть хорошо подключенный удаленный сайт, на который я дважды в день отправляю снимки определенных таблиц. Репликация снимков — единственный метод, который я могу использовать, исходя из ограничений схемы базового приложения.

Снимок публикуется через путь UNC и FTP и занимает около 6 МБ, так что он довольно мал. Я не уверен на 100%, используется ли FTP или UNC на самом деле. Проходит около 5 минут с момента сжатия снимка в файл snapshot.cab до момента, когда монитор репликации показывает мне первый из применяемых скриптов, поэтому я предполагаю, что этот промежуток — время передачи. Я думаю, что это UNC/SMB, учитывая, что копирование такого количества данных через наше соединение 3 МБ через FTP занимает гораздо меньше времени.

Загрузка снимка занимает около 25 минут, что кажется большим временем для скромного объема данных. Много строк (некоторые таблицы содержат 100 тыс. строк), но фактический объем данных довольно мал.

Подписчик использует SQLExpress 2005 на ProLiant 2,8 ГГц с 3 ГБ оперативной памяти, которая в остальном не занята. Я еще не проводил обширного профилирования, чтобы посмотреть, есть ли конфликт дисков или что еще может происходить.

Мне интересно, что здесь скорее всего ограничивает скорость и есть ли способ ускорить это. 30 минут кажутся слишком долгим временем для копирования и загрузки 6 МБ сжатых данных.

решение1

Поскольку на удаленной стороне у вас установлен SQL Express, ваши возможности довольно ограничены, поскольку вы можете выполнять только push-подписку.

Репликация работает так: данные BCP-записываются в двоичный файл. Когда агент репликации обнаруживает, что снимок сделан, он использует BCP для загрузки данных по сети в подписчика. BCP по сети — это не самый быстрый процесс.

Связанный контент