powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Долгие блокировки LCK_M_X
25 сообщений из 25, страница 1 из 1
Долгие блокировки LCK_M_X
    #40067148
georgy_2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

Появилась большая проблема. Появилось огромное количество блокировок с типом LCK_M_X. Причем среднее время выполнения скачет от 30 сек. до нескольких минут, что очень сказывается на работе пользователей. И таких ситуаций уже становится достаточно много. Если раньше это было один-два раза в 3-4 дня, то на сегодня это уже ежедневная проблема. Оптимизировал несколько тяжелых по чтению запросов, добавил индексы по рекомендациям и скриптам Брентозара (разумеется не основываясь логикой, чем больше индексов тем лучше). Что примечательно, в таблице которая фиксирует такие блокировки, везде присутствуют 2-3 одинаковых запроса в столбце blocked, а именно одни и те же UPDATE. Проанализировал эти UPDATE и они не представляют особой опасности. Логического чтения 12-15, стоимость в районе 0,0000123 (условно, но примерно так и есть), поиск по индексу. Пробовал так же написать SELECT с условиями UPDATE, что бы он из буфера читал, но там в принципе нечему читать не то что с диска, даже с буфера

На что еще можно обратить внимание и что в данном случае по Вашему опыту, можно сделать. В инете все очень поверхностно и общими фразами.

Заранее благодарю!
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067182
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
georgy_2012,

может кто-то запретил укрупнение блокировок на таблицу ALTER TABLE SET LOCK_ESCALATION = DISABLE.
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067188
georgy_2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

Про это даже как-то не подумал, если я не ошибаюсь, то укрупнение дает возможность объединения всех блокировок в одну и блокирует же всю таблицу? Точнее на уровне таблицы
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067207
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
georgy_2012,

да, более 5000 блокировок укрупняются до таблицы.
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067213
georgy_2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

А как это можно проверить?
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067226
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
georgy_2012,

Код: sql
1.
select tt.lock_escalation, schema_name(tt.schema_id) sname, tt.name tname from sys.tables tt
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067229
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

И как часто вы наблюдали укрупнение X при конкурентом доступе к таблице?
Как данное укрупнение позволит уменьшить общее время удержания X в системе?
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067232
georgy_2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

Спасибо за скрпит, LOCK_ESCALATION = 0. То есть не отключено
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067253
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

да, логично.
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067254
georgy_2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

Есть может какие еще варианты, куда нужно посмотреть?
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067260
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
georgy_2012,

а что это за таблица, которая постоянно и параллельно обновляется?
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067261
georgy_2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

Да, это динамическая таблица, которая постоянно изменяется/добавляются новые данные. SELECT из нее так же происходит, чуть ли не каждые 3 секунды.
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067267
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
georgy_2012,

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

Они могут быть разные.
Например, наличие в транзакции долгоиграющего запроса, который раньше не был долгоиграющим. Или долгие ожидания какого-либо ресурса.
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067282
georgy_2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

В части ожидания ресурса, вроде должны появляться запросы SOS_SHIELD (поправьте меня если я ошибаюсь), но таких я не встречал и по процессорным ресурсам, железка вполне себе тянет. Опять же я могу ошибаться в вышесказанном, но пока не встречал с таким проблем.

А вот по части долгоиграющего запроса, безусловно лезут запросы, которые раньше были мелкими и почти невесомыми по всем пунктам и как шарики начинают "надуваться", но за этим тоже слежу.
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067458
georgy_2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может есть варианты, что можно сделать или куда посмотреть?
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067489
-comm-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Причину блокировки установить удалось?
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067491
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
georgy_2012,

Аанализируйте содержимое sys.dm_exec_requests для сессий, удерживающих X

Если состояние сессии running/runnable, значит выполняется/стоит в очереди на выполнение долгоиграющий запрос.
Посмотреть что именно выполняется и на какой стадии можно с помощью sys.dm_exec_query_statistics_xml

Если состояние сессии suspended, значит имеет место ожидание какого-то ресурса. last_wait_type, wait_resource и blocking_session_id покажут какого именно и кто блокирует.
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067494
georgy_2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

Большое спасибо! Буду анализировать
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067497
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
georgy_2012,

Есть еще вариант - по каким-либо причинам перестали завершаться некоторые транзакции.
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067499
georgy_2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

А как это можно отследить/определить?
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067521
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
georgy_2012
А как это можно отследить/определить?
Сессия удерживает X и находится в состоянии sleeping/awaiting command
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067523
georgy_2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

Спасибо большое!
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067720
-comm-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
georgy_2012,

В итоге нашлось?
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40067760
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
georgy_2012
Владислав Колосов,

Да, это динамическая таблица, которая постоянно изменяется/добавляются новые данные. SELECT из нее так же происходит, чуть ли не каждые 3 секунды.


Подумайте, как можно разделить процессы, чтобы эта таблица не была узким горлом. Например, выделить для каждого процесса отдельную таблицу или выполнять обновление фоновыми задачами при помощи очереди servicevroker. Не знаю условий использования сложно предложить что-то подходящее.
...
Рейтинг: 0 / 0
Долгие блокировки LCK_M_X
    #40068295
georgy_2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-comm-,

Пока еще в процессе, так как увы есть куча других параллельных задач, но кое какая определенность появилась, а именно выползло еще несколько тяжелых по чтению запросов, тяжелых по записи таблиц, полагаю, что стоит теперь копаться в индексах (помимо основной оптимизации запросов).
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Долгие блокировки LCK_M_X
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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