powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Сильно тупит репликация
5 сообщений из 5, страница 1 из 1
Сильно тупит репликация
    #39994212
Быдло__кодер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица на 1.5 млн записей, которая реплицируется транзакционной репликацией на другой mssql сервер с фильтром, отбирающим около 800 тыс записей
В один момент на главной базе выполняется запрос типа
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
BEGIN TRAN;
update table
set p1 = new_value_p1
     p2 = ...
    ...
     p6 = ...
from table
where <Условие обновления 450к записей, бОльшая часть реплицируется>


update table
set p7 = GETDATE(),
     p8 = const,
     p9=...
from table
where <Условие обновления 63к записей из 450к обновленных ранее >


COMMIT TRAN;



Изменения на базу дистрибьютора попадают почти сразу же, однако на базе подписчика изменения не отображаются более 3х часов. Оценка времени распространения команд около часа

В процессе ожидания на базе подписчика выполняли запрос с грязными чтениями, позволяющий оценить текущий прогресс операции
Код: sql
1.
2.
3.
select count(*)
from table with (nolock)
where p1 = new_value_p1


Видно что количество записей сначала довольно резво доходит до почти 450к, затем эта цифра также резво начинает падать, после чего вновь расти и на моменте обработки 80% записей скорость изменения падает до критической (по 1 записи в секунду). Т.е все выглядит так как будто он реплицирует первый запрос, затем откатывает его, затем начинает очень долго переливать оставшиеся 63 тыс записей

Повторная инициализация подписки с генерацией нового снепшота при этом пересоздает все данные на базе подписчика (а это еще порядка 10 таблиц такого же или бОльшего размера) за 15 минцт

Пробовали переписать запрос таким образом
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
BEGIN TRAN;
update table
set p1 = new_value_p1
     p2 = ...
    ...
     p6 = ...
     p7 = IIF(<условие>, GETDATE(), p7)
     p8 = IIF(<условие>, const, p8)
     p9=...
from table
where <Условие обновления 450к записей, бОльшая часть реплицируется>

COMMIT TRAN;



С таким запросом все еще хуже, 12к записей переливаются за 45 минут

Как можно объяснить такое странное поведение, куда копать?

MSSQL Server 2012 Enterprise, другие сессии во время выполнения не работают с обоими серверами, блокировок нет
В сессии которая выполняет прием данных на подписчике висит WAIT = async_network_io, cpu time практически не растет
Сетевые проблемы исключены
...
Рейтинг: 0 / 0
Сильно тупит репликация
    #39994218
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Быдло__кодер,

async_network_io - это ожидания передачи по локальной сети. Может вам трафик поджимают по каналам? Попробуйте в другое время передавать, например или посмотрите на маршрутизаторе, что с трафиком происходит.
...
Рейтинг: 0 / 0
Сильно тупит репликация
    #39994219
Быдло__кодер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, сеть вообще не загружена, перегенерили снепшот сразу после того как поняли что репу не дождаться и данные передались за 15 минут, хотя трафик на переливку таблиц наново в разы должен превышать апдейт 9 полей в 30% одной таблицы
...
Рейтинг: 0 / 0
Сильно тупит репликация
    #39994225
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Быдло__кодер,

Следует знать, что update на издателе, затрагивающий N строк, будет отреплицирован как N однострочных update на подписчике. А в вашем случае еще в одной транзакции.
...
Рейтинг: 0 / 0
Сильно тупит репликация
    #39994282
Idol_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
async_network_io - в большинстве случаев, это означает, что принимающая сторона не справляется. А почему, это другой вопрос. Если не сеть, то диски к примеру.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Сильно тупит репликация
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]