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

Откуда:
Сообщений: 2427
есть ХП

CREATE PROCEDURE [dbo].[GetSession]
	@emp_login VARCHAR(256)
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @sid VARBINARY(85) = SUSER_SID(@emp_login)
	SET @emp_id = (SELECT TOP(1) elgn_emp FROM EmpLogins (NOLOCK) WHERE elgn_sid = @sid)		
	UPDATE Employee SET emp_logon = GETDATE() WHERE emp_id = @emp_id
	...


падает по таймауту
кильнул 194 процесс, заработало, см скрин
возникает вопрос, откуда столько дедлоков? куда смотреть?

К сообщению приложен файл. Размер - 60Kb
22 окт 18, 17:15    [21711421]     Ответить | Цитировать Сообщить модератору
 Re: Откуда столько дедлоков?  [new]
TaPaK
Member

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

блокировка и дедлок это как бы не одно и тоже
22 окт 18, 17:19    [21711429]     Ответить | Цитировать Сообщить модератору
 Re: Откуда столько дедлоков?  [new]
listtoview
Member

Откуда:
Сообщений: 2427
TaPaK
listtoview,

блокировка и дедлок это как бы не одно и тоже

щет
22 окт 18, 17:19    [21711430]     Ответить | Цитировать Сообщить модератору
 Re: Откуда столько дедлоков?  [new]
listtoview
Member

Откуда:
Сообщений: 2427
а почиму они не снимаются?
т.е накладывается монопольная блокировка и другие запросы не выполняются?
22 окт 18, 17:21    [21711436]     Ответить | Цитировать Сообщить модератору
 Re: Откуда столько дедлоков?  [new]
listtoview
Member

Откуда:
Сообщений: 2427
сорри за ошибки, на нервах :)
22 окт 18, 17:22    [21711438]     Ответить | Цитировать Сообщить модератору
 Re: Откуда столько дедлоков?  [new]
TaPaK
Member

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

автор
а почиму они не снимаются?

отсюда не видно. Смотрите чего ждут, в вашем случае - чего ждала 194 сессия
22 окт 18, 17:25    [21711446]     Ответить | Цитировать Сообщить модератору
 Re: Откуда столько дедлоков?  [new]
listtoview
Member

Откуда:
Сообщений: 2427
Получается была монопольная блокировка на Employee
надо было посмотреть кто блокировал
блокировала та же сессия, ибо после килла заработало
но поздно уже, сейчас не посмотреть
23 окт 18, 10:10    [21711957]     Ответить | Цитировать Сообщить модератору
 Re: Откуда столько дедлоков?  [new]
TaPaK
Member

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

автор
блокировала та же сессия, ибо после килла заработало

пациента пристрелили, ибо после смерти насморк прошёл... такая логика?
23 окт 18, 10:19    [21711969]     Ответить | Цитировать Сообщить модератору
 Re: Откуда столько дедлоков?  [new]
listtoview
Member

Откуда:
Сообщений: 2427
TaPaK
listtoview,

автор
блокировала та же сессия, ибо после килла заработало

пациента пристрелили, ибо после смерти насморк прошёл... такая логика?

надо было смотреть что за запрос в 194
но сейчас поздно уже
23 окт 18, 10:24    [21711977]     Ответить | Цитировать Сообщить модератору
 Re: Откуда столько дедлоков?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
TaPaK
listtoview,

автор
блокировала та же сессия, ибо после килла заработало

пациента пристрелили, ибо после смерти насморк прошёл... такая логика?
Бывает, если встаёт продакшен, приходиться восстанавливать работоспособность, ценой невозможности разобраться с багом.
listtoview
но поздно уже, сейчас не посмотреть
Подготовте скрипт, который сохраняет участвующие в блокировке сессии, вместе с соотв. запросами.
Что бы, в случае чего, можно было потом разобраться.
23 окт 18, 10:30    [21711987]     Ответить | Цитировать Сообщить модератору
 Re: Откуда столько дедлоков?  [new]
listtoview
Member

Откуда:
Сообщений: 2427
alexeyvg
TaPaK
listtoview,

пропущено...

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

посмотрю в отчете и dbcc inputbuffer(194)
23 окт 18, 10:35    [21711995]     Ответить | Цитировать Сообщить модератору
 Re: Откуда столько дедлоков?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
alexeyvg,
автор
Бывает, если встаёт продакшен, приходиться восстанавливать работоспособность, ценой невозможности разобраться с багом.

я не про решение, я про логику вывода
23 окт 18, 10:36    [21711997]     Ответить | Цитировать Сообщить модератору
 Re: Откуда столько дедлоков?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
listtoview
alexeyvg
Подготовте скрипт, который сохраняет участвующие в блокировке сессии, вместе с соотв. запросами.
Что бы, в случае чего, можно было потом разобраться.

посмотрю в отчете и dbcc inputbuffer(194)
Попробуйте sp_WhoIsActive, покажет сами стейтменты, и другую полезную информацию. А с параметром @find_block_leaders покажет цепосчки блокировок.
Скачать можно отсюда.
Некоторое описание есть на Хабре
23 окт 18, 10:54    [21712025]     Ответить | Цитировать Сообщить модератору
 Re: Откуда столько дедлоков?  [new]
invm
Member

Откуда: Москва
Сообщений: 9345
listtoview
но сейчас поздно уже
Выяснить почему ваш UPDATE блокирует какую-то таблицу целиком никогда не поздно.
23 окт 18, 10:57    [21712030]     Ответить | Цитировать Сообщить модератору
 Re: Откуда столько дедлоков?  [new]
listtoview
Member

Откуда:
Сообщений: 2427
invm
listtoview
но сейчас поздно уже
Выяснить почему ваш UPDATE блокирует какую-то таблицу целиком никогда не поздно.

не он блокировал
а его блокировали
23 окт 18, 11:12    [21712072]     Ответить | Цитировать Сообщить модератору
 Re: Откуда столько дедлоков?  [new]
invm
Member

Откуда: Москва
Сообщений: 9345
listtoview
не он блокировал
а его блокировали
Из-за того, что хотел блокировать таблицу целиком и не смог.
Впрочем, искать и лечить проблему или нет - дело сугубо ваше.
23 окт 18, 11:47    [21712125]     Ответить | Цитировать Сообщить модератору
 Re: Откуда столько дедлоков?  [new]
listtoview
Member

Откуда:
Сообщений: 2427
invm
listtoview
не он блокировал
а его блокировали
Из-за того, что хотел блокировать таблицу целиком и не смог.
Впрочем, искать и лечить проблему или нет - дело сугубо ваше.

а, вы имели ввиду другой update
да не факт, может какой ниб ребилд индексов
у меня 2016 стандарт

ладно, всем спасибо, вопрос снят
23 окт 18, 13:53    [21712325]     Ответить | Цитировать Сообщить модератору
 Re: Откуда столько дедлоков?  [new]
listtoview
Member

Откуда:
Сообщений: 2427
опять то же самое

смотрю какой запрос блокирует
dbcc inputbuffer(129)

вижу
SELECT T1."call_id", T1."call_date", ...


а разве select умеет накладывать монопольную блокировку в read committed?
из 1C выполняется запрос
23 окт 18, 14:09    [21712352]     Ответить | Цитировать Сообщить модератору
 Re: Откуда столько дедлоков?  [new]
TaPaK
Member

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

читать про shared lock, а то у вас какая-то одна блокировка.
ну и или разбирайтесь почему пересекаются (или Update вообще всю таблицу ждёт) или RCSI
23 окт 18, 14:22    [21712363]     Ответить | Цитировать Сообщить модератору
 Re: Откуда столько дедлоков?  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
listtoview
invm
пропущено...
Из-за того, что хотел блокировать таблицу целиком и не смог.
Впрочем, искать и лечить проблему или нет - дело сугубо ваше.

а, вы имели ввиду другой update
да не факт
...

он не имел в виду другой апдэйт.
он имел в виду именно ваш,
желающий получить Х на всю таблицу целиком,
хотя ведь ему вся таблица не нужна,
лишь строки с данным конкретным emp_id
(у кого-то нет индекса по emp_id?)
---
и уж разумеется достаточно иметь любого читателя на таблице,
чтобы не суметь получить на нее эксклюзивную блокировку
23 окт 18, 15:53    [21712467]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить