Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Две публикации лочатся на индесированном представлении (вьюхе)  [new]
Replicator999
Guest
Есть три публикации: А, А_фильтр и Б. В публикации А и Б - десятки таблиц, в публикации А_фильтр - три таблицы. В публикации А и А_фильтр есть по таблице, которые участвуют в индексированном представлении на одном из подписчиков (Сервер1). Когда на опубликованной базе проходит сколь нибудь серьезный апдейт, то на подписчике возникают блокирвоки между этими двумя публикациями. Они, наверное пытаются проапдейтить один и тот же индекс в представлении. Это можно как-то поправить?

Вариант объединения этих таблиц в одну публикацию нежелателен, ибо сильно все усложнит и возможны проблемы с производительностью. Это связано с тем что были изначально две публикации А и Б. Публикация А имела два подписчика: Сервер1 и Сервер2. Публикация Б имела одного подписчика: Сервер2. Потребовалось отфильтровать три таблицы из публикации А но только для подписчика Сервер1. Я выделил эти три таблицы в публикацию А_фильтр, удалил их из публикации А и добавил в публикацию Б (ибо на Сервер2 эти три таблицы нужны без фильтров). Если объединять кофликтующие таблицы из публикаций А и А_фильтр, то потребуется в публикацию Б добавлять десятки таблиц: (А + А_фильтр) -> Сервер1, (Б + все таблицы из А) -> Сервер2, что означает что почти вся база будет опубликована дважды.

Есть ли еще варианты?
27 мар 12, 03:46    [12317962]     Ответить | Цитировать Сообщить модератору
 Re: Две публикации лочатся на индесированном представлении (вьюхе)  [new]
Replicator999
Guest
Да, кстати, все это крутится на SQL Server 2008 R2
27 мар 12, 03:50    [12317964]     Ответить | Цитировать Сообщить модератору
 Re: Две публикации лочатся на индесированном представлении (вьюхе)  [new]
Replicator999
Guest
Попробовал поиграться с
-CommitBatchSize
-CommitBatchThreshold
и
-ReadBatchSize
-ReadBatchThreshold
для дистрибьютерского агента и лог ридера и вроде помогает, тока репликация идет дольше.

Может еще какие варианты есть?
27 мар 12, 06:13    [12318008]     Ответить | Цитировать Сообщить модератору
 Re: Две публикации лочатся на индесированном представлении (вьюхе)  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Replicator999
Есть ли еще варианты?
Если объясните человеческим языком, что означает
Когда на опубликованной базе проходит сколь нибудь серьезный апдейт, то на подписчике возникают блокирвоки между этими двумя публикациями.
, а так же все-таки озвучите типы публикаций и подписчиков, то может быть и будут.
27 мар 12, 09:11    [12318200]     Ответить | Цитировать Сообщить модератору
 Re: Две публикации лочатся на индесированном представлении (вьюхе)  [new]
Replicator999
Guest
invm
Replicator999
Есть ли еще варианты?
Если объясните человеческим языком, что означает
Когда на опубликованной базе проходит сколь нибудь серьезный апдейт, то на подписчике возникают блокирвоки между этими двумя публикациями.
, а так же все-таки озвучите типы публикаций и подписчиков, то может быть и будут.


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

Репликация транзакционная. Дистрибьютер - отдельный сервер. Все сервера 2008 R2.
27 мар 12, 10:52    [12318749]     Ответить | Цитировать Сообщить модератору
 Re: Две публикации лочатся на индесированном представлении (вьюхе)  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Replicator999, дедлоки что ли там у вас?
27 мар 12, 10:54    [12318774]     Ответить | Цитировать Сообщить модератору
 Re: Две публикации лочатся на индесированном представлении (вьюхе)  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1197
Бывают и дедлоки, но реже, обычно один агент ждет другого и не может реплицировать свои транзакции. Из-за это данные попадают на подписчик гораздо позже, что не есть хорошо.
27 мар 12, 10:58    [12318804]     Ответить | Цитировать Сообщить модератору
 Re: Две публикации лочатся на индесированном представлении (вьюхе)  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
Roust_m
Бывают и дедлоки, но реже, обычно один агент ждет другого и не может реплицировать свои транзакции. Из-за это данные попадают на подписчик гораздо позже, что не есть хорошо.

расписание поменяйте
27 мар 12, 11:02    [12318830]     Ответить | Цитировать Сообщить модератору
 Re: Две публикации лочатся на индесированном представлении (вьюхе)  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1197
В принципе проблема блокировок решилась уменьшением вот этих парамтров:
-CommitBatchSize
-CommitBatchThreshold
и
-ReadBatchSize
-ReadBatchThreshold

Но теперь репликация идет медленнее, хотя данные из обоих агентов попадают на подписчик более-менее синхронно.

Думаю другой вариант будет объединение публикаций А и А_фильтр, но тогда все таблицы из А надо включить в публикацию Б и на первую публикацию подписать первый сервер, а на вторую - второй. Вот тока не будет ли это дополнительной нагрузкой на публикующий сервер, если почти все таблицы дважды опубликованы? Как себя ведет движок в этом случае? Он это оптимизирует или выполняет двойную работу?
27 мар 12, 11:03    [12318841]     Ответить | Цитировать Сообщить модератору
 Re: Две публикации лочатся на индесированном представлении (вьюхе)  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1197
Slava_Nik
Roust_m
Бывают и дедлоки, но реже, обычно один агент ждет другого и не может реплицировать свои транзакции. Из-за это данные попадают на подписчик гораздо позже, что не есть хорошо.

расписание поменяйте


Не могу расписание менять, ибо репликация должна происходить непрерывно, чтобы данные доходили до подписчика одновременно. А так да, пробовал остановить один агент, другой быстро реплицировал свои транзакции, после чего запускал первый агент. Но так не должно быть, данные из обеих публикаций должны попадать на подписчик примерно одновременно.
27 мар 12, 11:05    [12318865]     Ответить | Цитировать Сообщить модератору
 Re: Две публикации лочатся на индесированном представлении (вьюхе)  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Roust_m, чем обусловлено требование одновременности?
27 мар 12, 11:50    [12319217]     Ответить | Цитировать Сообщить модератору
 Re: Две публикации лочатся на индесированном представлении (вьюхе)  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1197
invm
Roust_m, чем обусловлено требование одновременности?


Тем что данные из разных таблиц должны быть "синхронны", плюс еще надо чтобы данные быстро попадали на подписчика, в идеале не более нескольких секунд.
27 мар 12, 12:04    [12319324]     Ответить | Цитировать Сообщить модератору
 Re: Две публикации лочатся на индесированном представлении (вьюхе)  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Roust_m, "синхронность" обеспечивается включением необходимых статей в одну публикацию. Если это невозможно, уменьшайте CommitBatchThreshold до приемлемого значения. Можете еще попробовать увеличить SubscriptionStreams, но сначала проверить на стенде.
27 мар 12, 12:28    [12319514]     Ответить | Цитировать Сообщить модератору
 Re: Две публикации лочатся на индесированном представлении (вьюхе)  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1197
invm
Roust_m, "синхронность" обеспечивается включением необходимых статей в одну публикацию. Если это невозможно, уменьшайте CommitBatchThreshold до приемлемого значения. Можете еще попробовать увеличить SubscriptionStreams, но сначала проверить на стенде.


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

Еще думаю сделать из трех публикаций две: одну с фильтром на три таблицы + остальные таблицы нужные на Сервер1 и одну без фильтра на три таблицы + остальные таблицы нужные на Сервер2. На первую подписать Сервер1, а на вторую Сервер2.

SubscriptionStreams попробую, может это и будет решением.
28 мар 12, 09:22    [12324893]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить