Регулирование репликации SQL-сервера? - PullRequest
0 голосов
/ 28 января 2011

У нас есть проблема с производительностью текущей настройки репликации транзакций на SQL Server 2008. Когда создается новый моментальный снимок и этот моментальный снимок применяется к подписчику, мы видим, что использование сети на издателе и распространителе увеличивается до 99%, и мы видим, что дисковые очереди приближаются к 30 Это вызывает тайм-ауты приложения.

Есть ли способ, которым мы можем ограничить реплицируемые данные, которые пересылаются? Можем ли мы ограничить количество реплицируемых строк? Есть ли какие-либо переключатели, которые можно включить / выключить для достижения этой цели?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Наш администратор баз данных заставил нас разбивать dml-код на партии по 50000 строк за раз с интервалом в пару минут. Время от времени он играет с этим размером пакета, но с нашими реплицирующимися базами данных все в порядке. Для пакетной обработки все должно идти во временные таблицы, новый столбец (назовите его Ordinal), который выполняет row_number (), а затем BatchID, чтобы быть похожим на Ordinal / 50000. Наконец, появляется цикл для подсчета BatchID и обновления целевой таблицы пакетным способом по партии , Тяжело в разработке, проще для администраторов баз данных и не нужно больше платить за инфраструктуру.

0 голосов
/ 17 июня 2011

У вас есть альтернатива, чтобы справиться с этой ситуацией

  • При настройке репликации транзакций для таблицы, содержащей миллионы записей
  • Первоначальный снимок потребует времени для того, чтобы записи былидоставлено подписчику
  • В SQL 2005 у нас есть возможность создавать таблицы как на сервере транзакций, так и на сервере публикации, заполнять набор данных и настраивать репликацию поверх него
  • Когда вы добавляете подписку с помощью команды EXEC sp_addsubscriptionset @sync_type = 'только поддержка репликации'.
  • Справочный материал http://www.mssqltips.com/tip.asp?tip=1117
...