Можете ли вы использовать относительно дорогой фильтр для репликации транзакций?
Я пытаюсь реплицировать (транзакционную, push) сравнительно небольшую таблицу (строки по 50 КБ), используя несколько различных фильтров, которые довольно дороги (каждый занимает не менее часа, чтобы завершить, включая объединение с таблицей, имеющей 4 млрд. строки в другой базе данных). Я ожидаю, что опубликованную статью нужно будет синхронизировать несколько раз в день.
Это возможно, или я должен искать другое решение?
- Будет ли какая-либо проблема с исключительной блокировкой исходной таблицы во время репликации?
- В настоящее время состояние агента моментальных снимков гласит: "[0%] Процесс запущен и ожидает ответа от сервера". Это нормально для дорогого фильтра? Это приемлемо на практике?
1 ответ
Для чего это стоит, вот выдержка из MSDN - Фильтрация опубликованных данных:
Фильтры строк в публикациях транзакций могут добавить значительные накладные расходы, поскольку предложение фильтра статьи оценивается для каждой строки журнала, записанной для опубликованной таблицы, чтобы определить, должна ли реплицироваться строка. Следует избегать фильтров строк в публикациях транзакций, если каждый узел репликации может поддерживать полную загрузку данных, а общий набор данных достаточно мал.
Вероятно, лучше всего фильтровать строки с использованием очень быстрого критерия sargable, который полностью независим от других строк / таблиц / баз данных.