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

Откуда:
Сообщений: 5
Всем привет

наблюдаю картину, примерно, 2 сессии выполняются параллельно и выполняют запросы в порядке:
1. select from tableX with (nolock) - LCK_M_SCH_S (среднее время выполнения 1 минута)
2. не ждет 1ую, drop table tableX - LCK_M_SCH_M

обе висят оч долго. Как это работает? Могут ли 1/2 блокировать друг друга?
Почему первая не может начать работу, а вторая не ждет когда закончит первая ?
но это только наблюдения, если так это и должно работать, тогда - какое условие еще должно выполниться, чтобы обе сессии залипли ?


Спасибо!
p.s. если из новой сессии выполнить select без (nolock) - она тоже зависнет. 1ый select выполнится только после kill 2nd session
21 ноя 18, 12:08    [21739899]     Ответить | Цитировать Сообщить модератору
 Re: Объясните плз механизм LCK_M_SCH_S/LCK_M_SCH_M  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36687
Ну вот где вы блокировки смотрели, там же и номер сессии блокирующей где-то должен быть.
21 ноя 18, 12:16    [21739911]     Ответить | Цитировать Сообщить модератору
 Re: Объясните плз механизм LCK_M_SCH_S/LCK_M_SCH_M  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7385
ethX,

вероятно, Вы не видите всей картины. Блокировки взаимоисключающие и вторая будет применена после первой.
21 ноя 18, 13:54    [21740041]     Ответить | Цитировать Сообщить модератору
 Re: Объясните плз механизм LCK_M_SCH_S/LCK_M_SCH_M  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1667
ethX,

sp_who2 запустите, и посмотрите, какие соединения к серверу существуют, их состояния и какие из них какие блокируют.
24 ноя 18, 23:46    [21743921]     Ответить | Цитировать Сообщить модератору
 Re: Объясните плз механизм LCK_M_SCH_S/LCK_M_SCH_M  [new]
nvv
Member

Откуда:
Сообщений: 54
Пожалуй не буду городить новую тему, а спрошу здесь...
Заголовок - то что нужно )

Имею крайне острую проблему в виде ожидания
LCK_M_SCH_S metadatalock subresource=STATS classid=object_id = 1870121903, stats_id = 44 dbid=5 lockPartition=2 id=lock8bc89b6e00 mode=Sch-M

Появилась после перехода с 2012SP2 на 2017RTM. Не думаю что связь есть, но все же... 2017 работает успешно много где. А подобного рода ожидание встретил впервые.
Проблема возникает на SELECTe... Тяжелом селекте. Иногда он виснет и является Head Blocker для данного вида блокировки.
Что за это за ожидание - объяснять не нужно. Блокировка схемы, LCK_S_SCH_S устанавливается условно при любом селекте, LCK_M_SCH_S - при обновлении статистики, LCK_M_SCH_M - при реструктуризации базы.
Это ERP 1C, ничего мимо платформы "не выдумано". RCSI.
Других поводов для данной блокировки в 1С кажется нет (хотя можете меня просветить)
Блокировка ждет обновление статистики. Объект встречается разный, но их не много (т.е. несколько штук).
Иногда помогает (помогало) обновление статистик таблицы с FULL SCAN. Теперь уже не помогает.

Вопросы:
- "откуда она берется" какого черта ? (риторический)
- почему она возникает (время ожидания - десятки минут и более, вместо нормальных микросекунд), что ее провоцирует?
- как ее избегать?
Научите... ))

CPU: 20-60%
Память: есть
Время жизни страницы в памяти - 1000-6000, но...
- кроме этого все-таки есть подозрения вымывание данных из памяти, ряд запросов показывает потребление до 5Гб ОЗУ (омг: больше-выше-сильнее)
- на "поломанные" статистики (такое вообще возможно ? может пробовать удалить проблемные? Это же она: stats_id = 44?)

Сегодня предложил отключить автообновление статистики в качестве эксперимента (пока не сделали этого).
Ну и да... В момент возникновения проблем никаких регламентов не выполняется. Сервер - физический. Одна база на инстанс. Диски - SSD с отличной минимальной задержкой.
22 апр 19, 15:59    [21868997]     Ответить | Цитировать Сообщить модератору
 Re: Объясните плз механизм LCK_M_SCH_S/LCK_M_SCH_M  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
nvv,

индексы параллельно не перестраиваете?
22 апр 19, 16:35    [21869042]     Ответить | Цитировать Сообщить модератору
 Re: Объясните плз механизм LCK_M_SCH_S/LCK_M_SCH_M  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36687
Авто-обновление статистики?

Сообщение было отредактировано: 22 апр 19, 16:47
22 апр 19, 16:47    [21869054]     Ответить | Цитировать Сообщить модератору
 Re: Объясните плз механизм LCK_M_SCH_S/LCK_M_SCH_M  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Гавриленко Сергей Алексеевич
Авто-обновление статистики?

хотя наверное ближе. С 2014 поменялось событие на атообновление
22 апр 19, 16:59    [21869070]     Ответить | Цитировать Сообщить модератору
 Re: Объясните плз механизм LCK_M_SCH_S/LCK_M_SCH_M  [new]
nvv
Member

Откуда:
Сообщений: 54
автор
индексы параллельно не перестраиваете?
Никаких регламентов или "ручного участия" - НЕТ. Исключено.

Виновник четко определен - вполне конкретный запрос и строчка кода в приложении.

автор
Авто-обновление статистики?
Да.
Статистика обновляется асинхронно. Но вкл или выкл - не заметил изменения частоты возникновения проблемы.

Вот ВЫКЛ AUTO UPDATE вообще - вариант. Никогда его не практиковал.
22 апр 19, 17:44    [21869131]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить