Можете ли вы использовать относительно дорогой фильтр для репликации транзакций?

Я пытаюсь реплицировать (транзакционную, push) сравнительно небольшую таблицу (строки по 50 КБ), используя несколько различных фильтров, которые довольно дороги (каждый занимает не менее часа, чтобы завершить, включая объединение с таблицей, имеющей 4 млрд. строки в другой базе данных). Я ожидаю, что опубликованную статью нужно будет синхронизировать несколько раз в день.

Это возможно, или я должен искать другое решение?

  • Будет ли какая-либо проблема с исключительной блокировкой исходной таблицы во время репликации?
  • В настоящее время состояние агента моментальных снимков гласит: "[0%] Процесс запущен и ожидает ответа от сервера". Это нормально для дорогого фильтра? Это приемлемо на практике?

1 ответ

Для чего это стоит, вот выдержка из MSDN - Фильтрация опубликованных данных:

Фильтры строк в публикациях транзакций могут добавить значительные накладные расходы, поскольку предложение фильтра статьи оценивается для каждой строки журнала, записанной для опубликованной таблицы, чтобы определить, должна ли реплицироваться строка. Следует избегать фильтров строк в публикациях транзакций, если каждый узел репликации может поддерживать полную загрузку данных, а общий набор данных достаточно мал.

Вероятно, лучше всего фильтровать строки с использованием очень быстрого критерия sargable, который полностью независим от других строк / таблиц / баз данных.

Другие вопросы по тегам