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

Откуда: Москва
Сообщений: 196
Добрый день.

Вчера тестовый сервер был обновлен с 2016 SP1 CU1 до 2016 SP1 CU7.
Обновление прошло нормально, но сегодня начались проблемы с дедлоками.

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

С чем может быть связано и что можно сделать?

К сообщению приложен файл. Размер - 75Kb
23 апр 19, 10:51    [21869577]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
invm
Member

Откуда: Москва
Сообщений: 9122
Посмотрите на каких ресурсах конфликт.
Было похожее - https://www.sql.ru/forum/1223955/blokirovka-processov-drug-druga
23 апр 19, 11:01    [21869594]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
Владислав Колосов
Member

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

висят потому, что это не дэдлоки.
23 апр 19, 11:16    [21869614]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
Danion
Member

Откуда: Москва
Сообщений: 196
invm,

Запросы я отловил, разбираться почему вообще начались блокировки тоже нужно.

Это обновление таблицы и селект в неё же, обычно в похожих случаях отстреливает селект.

update [TABLE] set [sync_with_lc_status] = @P1 where [AID] = @P2

select top 1500 * from [TABLE] where [sync_with_lc_status] in (@P1, @P2) and [TABLE].[Status] in (@P3, @P4, @P5, @P6) order by [cito] desc, [AID] desc

По ссылке посмотрел, но решения проблемы я там не вижу(
23 апр 19, 11:19    [21869622]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
Alibek B.
Member

Откуда:
Сообщений: 3525
Владислав Колосов
висят потому, что это не дэдлоки.

В строках 2 и 3 разве не дэдлок?
23 апр 19, 11:23    [21869629]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
invm
Member

Откуда: Москва
Сообщений: 9122
Danion,

Покажите для этих сессий wait_resource из sys.dm_exec_requests
23 апр 19, 11:37    [21869639]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
msLex
Member

Откуда:
Сообщений: 7730
Alibek B.
Владислав Колосов
висят потому, что это не дэдлоки.

В строках 2 и 3 разве не дэдлок?


Не обязательно.

Это могут быть разные потоки одних и тех же сессий.
Данные о блокировках собираются не снапшотом. В выборке вполне можно увидеть блокировки, которые не существовали в один момент времени (на вашей картинке не видно время ожидания).
23 апр 19, 11:38    [21869642]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
Danion
Member

Откуда: Москва
Сообщений: 196
Эти запросы с разных серверов.
3 столбец - время выполнения, на скриншоте макс 3 минуты, но висело и 20+

Сейчас сессии
87 и 75
87 - селект

К сообщению приложен файл. Размер - 56Kb
23 апр 19, 11:48    [21869655]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
Взаимоблокировки - это блокировки с положительно обратной связью: А блокирует Б, Б блокирует А и никто не хочет отпускать. Могут быть более длинные или с бОльшим количеством участников цепочки. Сервер отслеживает и прерывает выполнение одного из запросов.
23 апр 19, 12:11    [21869690]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
Danion
Member

Откуда: Москва
Сообщений: 196
Владислав Колосов,

Хорошее определение, но к чему оно?

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

Текущую проблему конечно решило, но вопрос почему sql сервер похоже не считал это взаимоблокировокой и не убирал, хотя они именно что блокировали выполнение друг друга, остаётся открытым.
23 апр 19, 12:26    [21869707]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 886
после перехода с 14 на 16 мы тоже получили дедлоки,которые сиквел на отлавливал, в итоге написали отсрелку таких сессий.
23 апр 19, 12:30    [21869712]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
AndrF
Member

Откуда:
Сообщений: 2183
Danion
Владислав Колосов,

Хорошее определение, но к чему оно?

...

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


ВПотому что в вашем примере нет взаимоблокировок, что вам и пытаются объяснить.
23 апр 19, 13:43    [21869791]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
AndrF
Member

Откуда:
Сообщений: 2183
[quot AndrF
Потому что в вашем примере нет взаимоблокировок, что вам и пытаются объяснить.[/quot]

Пардон, увидел таки 58-59
23 апр 19, 13:45    [21869795]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
Владислав Колосов
Member

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

это не взаимоблокировки, это конкуренция. Т.е. они по страничке между собой перебирают, мелкими шажками. Работает это медленно, много простоев, и кажется, что зависло.
23 апр 19, 14:35    [21869830]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
Там то ли куча, то ли нет нужного индекса.
23 апр 19, 14:36    [21869831]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
invm
Member

Откуда: Москва
Сообщений: 9122
Владислав Колосов
это не взаимоблокировки, это конкуренция
Забавная такая конкуренция: обе сессии в состоянии suspended и блокируют друг-друга.
Может объясните чем такая конкуренция отличается от взаимоблокировки?
23 апр 19, 14:44    [21869837]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
Danion
Member

Откуда: Москва
Сообщений: 196
Поддерживаю invm.

На таблице РК + не кластерные индексы.

Для данного запроса пожалуй не самые оптимальные, но обычно нормально отрабатывают.
По плану селект делает через Key Lookup (99% стоимости) + Index seek, дальше nested loops и последующая обработка.

Запрос выполняется меньше секунды, тогда висело и 30+ минут. Такая конкуренция по результату от дедлока не отличается, только сервер сам не решает проблему.
23 апр 19, 15:01    [21869855]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
TaPaK
Member

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

эскалация отключена?
23 апр 19, 15:05    [21869860]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
Danion
Member

Откуда: Москва
Сообщений: 196
TaPaK,

Флаги 1211, 1224 на этом сервер выключены. Скорее всего укрупнение включено.

Можно включать\выключать с помощью для таблицы
ALTER TABLE SET (LOCK_ESCALATION = DISABLE)
Но что-то не понял, где текущий статус пишет.
23 апр 19, 15:32    [21869888]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
TaPaK
Member

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

Флаги 1211, 1224 на этом сервер выключены. Скорее всего укрупнение включено.

Можно включать\выключать с помощью для таблицы
ALTER TABLE SET (LOCK_ESCALATION = DISABLE)
Но что-то не понял, где текущий статус пишет.

а не гадать?
23 апр 19, 15:35    [21869892]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
Danion
Member

Откуда: Москва
Сообщений: 196
TaPaK,

На уровне сервера включено.
Для проверки на уровне таблицы просьба подсказать как проверить.
23 апр 19, 15:39    [21869897]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
TaPaK
Member

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

Скрипт создания таблицы
23 апр 19, 15:50    [21869913]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
Danion
Member

Откуда: Москва
Сообщений: 196
TaPaK,

Спасибо за ответ.
На таблице тоже включено. При этом на проде включен флаг 1224, подобной проблемы не встречал, хотя на тесте кроме этих двух запросов тоже подобного нет.
23 апр 19, 16:04    [21869923]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
invm
Member

Откуда: Москва
Сообщений: 9122
Danion,

Чтобы делать какие-то осмысленные предположения нужно видеть wait_type и wait_resource взаимнозаблокированных сессий.
Но вы предпочитаете эти сведения держать в секрете.
23 апр 19, 16:26    [21869948]     Ответить | Цитировать Сообщить модератору
 Re: Не отстреливает дедлоки  [new]
Danion
Member

Откуда: Москва
Сообщений: 196
invm,

Выше в теме всё есть.
21869655
23 апр 19, 16:49    [21869976]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить