Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 sp_MSmakegeneration блокирует нафиг запросы и валит сервер  [new]
Shurgenz
Member

Откуда: Питер
Сообщений: 1938
есть мердж репликация

при интенсивных DML она блокирует нафиг пользовательские запросы

нашел причину в процедуре sp_MSmakegeneration

update dbo.MSmerge_contents with (rowlock) 
                    set partchangegen = @target_gen 
                where partchangegen = @gen and tablenick = @art_nick

вот тут апдэйтится порядка 5000 записей блокируя запросы вида

select top 1 @newgen = generation from [dbo].[MSmerge_genvw_646F5A6F8124424FB177B75C1FED9E8D] with (rowlock, updlock, readpast) 
        where art_nick = 7818003     and genstatus = 0
            and  changecount <= (1000 - isnull(@article_rows_inserted,0))


ну а это собственно результат пользовательских DML операций

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

SQL Server 2008 R2
26 авг 14, 11:39    [16492786]     Ответить | Цитировать Сообщить модератору
 Re: sp_MSmakegeneration блокирует нафиг запросы и валит сервер  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
У меня в репликации транзакций были проблемы с таблицей MSrepl_commands, которая сильно выросла и запросы к ней выполнялись долго, блокируя друг друга. Пришлось добавить пару индексов.
Думаю, и в Вашем случае нужен классический подход: определить проблемные запросы и оптимизировать их индексами, хинтами, своими планами выполнения.
Проверить дефрагментацию индексов, актуальность статистик и т.д. Хотя статистики там обновляются прямо в коде вроде бы.
26 авг 14, 15:40    [16494803]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить