Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите понять информацию по блокировке.. / 25 сообщений из 55, страница 1 из 3
31.10.2018, 15:12
    #39725879
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
Здравствуйте.

Версия сервера:

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )


Словили блокировку с типом "KEY" (Блокировка внутри индекса, которая защищает диапазон ключей в сериализуемых транзакциях)
Режим блокировки "U" (Update)

Знаем объект который участвует в блокировке - это таблица с "кубами"
Содержимое INPUTBUFFER показало, что ноги растут из хранимой процедуры (назовем её " MyDB.dbo.DeleteCheckedItems;1 ")

Поясните, куда копать? Что то не так с индексами у этой таблицы? или с ключом?
...
Рейтинг: 0 / 0
31.10.2018, 15:17
    #39725887
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
А с чего вы вообще взяли, что в вашей ситуации что-то не так?
...
Рейтинг: 0 / 0
31.10.2018, 15:27
    #39725906
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
MAULERСловили блокировку с типом "KEY" (Блокировка внутри индекса, которая защищает диапазон ключей в сериализуемых транзакциях)
Режим блокировки "U" (Update)Вы про блокировку, или про дедлок?
...
Рейтинг: 0 / 0
31.10.2018, 15:28
    #39725908
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
Гавриленко Сергей Алексеевич,

Ну потому что я словил блокировку. Эта блокировка может висеть часами, у пользователей всё начинает тормозить. До тех пор пока её не прибьют руками.
Хочу, чтобы таких блокировок не возникало.
...
Рейтинг: 0 / 0
31.10.2018, 15:30
    #39725909
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
alexeyvgMAULERСловили блокировку с типом "KEY" (Блокировка внутри индекса, которая защищает диапазон ключей в сериализуемых транзакциях)
Режим блокировки "U" (Update)Вы про блокировку, или про дедлок?

Видимо дедлок. Хочу понять причину, а из информации что есть только то что я написал в первом посте.
...
Рейтинг: 0 / 0
31.10.2018, 15:32
    #39725913
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
MAULERВидимо дедлок
видимо, что угодно, но не дедлок.
дедлок сервер разруливает без вас менее, чем за секунду
...
Рейтинг: 0 / 0
31.10.2018, 15:38
    #39725917
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
Yasha123,

Я просто хочу понять, почему именно блокировка с типом KEY?
Т.е. что мне проверить в первую очередь? Может быть что-то не так с индексом? или индекс построен неправильно.. или ещё что-то?
...
Рейтинг: 0 / 0
31.10.2018, 15:42
    #39725924
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
Yasha123дедлок сервер разруливает без вас менее, чем за секунду

первый дедлок будет разрешен максимум через 5 секунд после возникновения
далее частота обнаружения резко повышается (до 100ms), если дедлоков больше не наблюдается, частота возвращается к 5 с
...
Рейтинг: 0 / 0
31.10.2018, 15:47
    #39725927
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
MAULERYasha123,

Я просто хочу понять, почему именно блокировка с типом KEY?
Т.е. что мне проверить в первую очередь? Может быть что-то не так с индексом? или индекс построен неправильно.. или ещё что-то?
и с чем же еще должна быть блокировка?
радуйтесь, что KEY, индекс используется.
вам бы хотелось, чтобы всю таблицу залочило?
...
Рейтинг: 0 / 0
31.10.2018, 15:48
    #39725929
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
MAULERНу потому что я словил блокировку. Эта блокировка может висеть часами, у пользователей всё начинает тормозить. До тех пор пока её не прибьют руками.
Хочу, чтобы таких блокировок не возникало.

либо активный процесс (владелец блокировки) не очень расторопен, либо незакрытая транзакция

воспользуйтесь sp_whoisactive - она покажет и блокирующего, и транзакции, и планы, и многое другое
...
Рейтинг: 0 / 0
31.10.2018, 15:49
    #39725930
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
komradYasha123дедлок сервер разруливает без вас менее, чем за секунду
первый дедлок будет разрешен максимум через 5 секунд после возникновения
далее частота обнаружения резко повышается (до 100ms), если дедлоков больше не наблюдается, частота возвращается к 5 с
и какая же разница, если у ТС
авторЭта блокировка может висеть часами
?
...
Рейтинг: 0 / 0
31.10.2018, 15:50
    #39725932
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
MAULERЗдравствуйте.

Версия сервера:

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )

Поясните, куда копать?
поставьте актуальный апдейт сначала, а то можно удивляться багам на ровном месте

http://sqlserverbuilds.blogspot.com/#sql2008r2
...
Рейтинг: 0 / 0
31.10.2018, 15:52
    #39725935
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
Yasha123komradпропущено...

первый дедлок будет разрешен максимум через 5 секунд после возникновения
далее частота обнаружения резко повышается (до 100ms), если дедлоков больше не наблюдается, частота возвращается к 5 с
и какая же разница, если у ТС
авторЭта блокировка может висеть часами
?
это к тому, что не 1с, а 5с для первого дедлока
просто уточнение
...
Рейтинг: 0 / 0
31.10.2018, 15:59
    #39725949
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
MAULERСловили блокировку с типом "KEY" (Блокировка внутри индекса, которая защищает диапазон ключей в сериализуемых транзакциях)
Режим блокировки "U" (Update)

и где вы тут нашли "диапазон ключей" и "сериализацию"?
...
Рейтинг: 0 / 0
31.10.2018, 16:03
    #39725953
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
Yasha123, здесь .
...
Рейтинг: 0 / 0
31.10.2018, 16:18
    #39725974
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
MAULERYasha123, здесь .
значит, смените чтиво.
вот тут перечислены блокировки,
сравните таблицы 10-3 и 10-4,
убедитесь, что у вас никакого диапазона нет,
равно как и сериализации
...
Рейтинг: 0 / 0
01.11.2018, 09:34
    #39726310
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
Yasha123,

Спасибо. Чтиво полезное.
Но у меня до сих пор нет полной ясности, что делать с этой блокировкой.

Посмотрел код хранимой процедуры, там идет блок try-catch:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
	  begin try	  
			set @rowCountExt = 1;
			while @rowCountExt > 0
			begin
				begin transaction
					begin
						exec('DELETE TOP(10) FROM [' + @name + '] WHERE [deleted] = 1');
					end				
					set @rowCountExt = @@rowcount;
				commit transaction
			end			
	  end try		
	  begin catch	  
			rollback transaction;
			SELECT 
				@ErrorMessage = ERROR_MESSAGE(),
				@ErrorSeverity = ERROR_SEVERITY(),
				@ErrorState = ERROR_STATE();
			RAISERROR (@ErrorMessage,@ErrorSeverity,@ErrorState);
			return;
	  end catch



вот этот
Код: sql
1.
exec('DELETE TOP(10) FROM [' + @name + '] WHERE [deleted] = 1');


обрабатывает 0 строк, т.к. в столбце [deleted] везде нули.

может чей то опытный взгляд заметит подводный камень в этом коде?
...
Рейтинг: 0 / 0
01.11.2018, 10:05
    #39726329
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
MAULERможет чей то опытный взгляд заметит подводный камень в этом коде?Подозреваю, что для удаления нужно долго сканить всю таблицу, предварительно её заблокировав.

Рекомендую сделать фильтрованный индекс с условием WHERE [deleted] = 1
...
Рейтинг: 0 / 0
01.11.2018, 10:23
    #39726348
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
alexeyvg,
Я посмотрел содержимое, В этой таблице, 8500 записей. Неужели такое количество может положить сервер на несколько часов?
...
Рейтинг: 0 / 0
01.11.2018, 10:38
    #39726371
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
MAULER,

Ваша сессия с DELETE тоже блокирована.
...
Рейтинг: 0 / 0
01.11.2018, 10:47
    #39726382
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
invm,

Да, а видимо кем блокирована, надо посмотреть по blocked, выкупить запрос из INPUTBUFFER по spid = blocked
и понять корень блокировки...

У меня правильный ход мыслей?
...
Рейтинг: 0 / 0
01.11.2018, 11:27
    #39726408
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
MAULERи понять корень блокировки...

У меня правильный ход мыслей?Да
...
Рейтинг: 0 / 0
01.11.2018, 13:57
    #39726563
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
Подскажите, правильно ли я понимаю процесс отлавливания причины блокировки:
Первоначально процесс построен так:

1) Отлавливаю блокировку:
Код: sql
1.
2.
3.
SELECT *
  FROM master.dbo.sysprocesses (nolock) 
 WHERE blocked > 0


Получаю 1 строку с информацией о блокировке. (т.е. @spid = spid и @blocked = blocked)

Получаю текст заблокированного запроса:
Код: sql
1.
2.
3.
4.
declare @eventInfo nvarchar(max)
SELECT @eventInfo = (select t.text from sys.[dm_exec_sql_text](sp.sql_handle) t)		   
  FROM master.dbo.sysprocesses (nolock) sp
WHERE spid = @spid



Затем получаю текст блокирующего запроса:
Код: sql
1.
2.
3.
4.
declare @blocked_eventInfo nvarchar(max)
SELECT @blocked_eventInfo = (select t.text from sys.[dm_exec_sql_text](sp.sql_handle) t)		   
  FROM master.dbo.sysprocesses (nolock) sp
 WHERE spid = @blocked



Проблема в том, что если смотреть процесс в dbo.sysprocesses по spid = @blocked (из первого запроса)
то он (как я понимаю первопричина) - не заблокирован.
и INPUTBUFFER такого процесса постоянно меняется! Отсюда у меня есть опасения, что я не правильно получаю текст блокирующего запроса.

Отсюда вопрос: как получить текст того самого первого запроса, который стал причиной блокировки?
...
Рейтинг: 0 / 0
01.11.2018, 14:37
    #39726605
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
Думаю, что причина, по которой каждый раз меняется текст блокирующего запроса - простая:

Я ловлю блокировку агентом MSSQL, задание которого срабатывает каждые 30 сек.
На момент возникновения блокировки spid и blocked попадают в sysprocesses абсолютно верными.

Но когда начинаю анализировать блокировку (предварительно поймав её), spid блокировки остаётся прежним, ведь она ещё висит!

а вот blocked (id блокирующего процесса) может уже 20 раз измениться. И вроде бы я смотрю правильный spid в sysprocesses , а данные в нём уже совсем от другой активности.

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

Я правильно понимаю суть?
...
Рейтинг: 0 / 0
01.11.2018, 15:19
    #39726643
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять информацию по блокировке..
MAULER,

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


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