Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Какой именно диапазон заблокирован в Range? / 3 сообщений из 3, страница 1 из 1
13.09.2020, 18:36
    #39998099
vi0
vi0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой именно диапазон заблокирован в Range?
Добрый день
Коллеги, помогите разобраться - хочу понять, как узнать от сервера, какой именно диапазон ключей заблокирован при serializable.
Прочитал по этой теме много веток на форуме и на других сайтах.
Пока что вижу что это можно сделать только рассуждая логически, т.е. нет явной информации, что такой то диапазон заблокирован. Или можно все таки это сделать явно?

Например есть таблица:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
create table t1 (c1 int)
create clustered index it1 on t1(c1)

insert into t1 values(20)
insert into t1 values(30)
insert into t1 values(40)

set transaction isolation level serializable
begin tran


Чтением получаем разные диапазоны в блокировках. Примеры выполнял в разных транзакциях
Код: sql
1.
2.
3.
select * from t1 where c1=20
select * from t1 where c1=30
select * from t1 where c1=40


Вот блокировки каждого селекта, которые получил из dm_tran_locks
Код: sql
1.
select * from sys.dm_tran_locks  where resource_type = 'KEY'

20resource_typeresource_subtyperesource_database_idresource_descriptionresource_associated_entity_idresource_lock_partitionrequest_moderequest_typerequest_statusrequest_reference_countrequest_lifetimerequest_session_idrequest_exec_context_idrequest_request_idrequest_owner_typerequest_owner_idrequest_owner_guidrequest_owner_lockspace_idlock_owner_addressKEY14(0bdec3f2b948)720575940448092160RangeS-SLOCKGRANT0335544325600TRANSACTION5169790x0000000178218C10:1:10x0000000176F7F580KEY14(69c872e07e60)720575940448092160RangeS-SLOCKGRANT0335544325600TRANSACTION5169790x0000000178218C10:1:10x0000000176F80B0030


30resource_typeresource_subtyperesource_database_idresource_descriptionresource_associated_entity_idresource_lock_partitionrequest_moderequest_typerequest_statusrequest_reference_countrequest_lifetimerequest_session_idrequest_exec_context_idrequest_request_idrequest_owner_typerequest_owner_idrequest_owner_guidrequest_owner_lockspace_idlock_owner_addressKEY14(199f61d4d268)720575940448092160RangeS-SLOCKGRANT0335544325600TRANSACTION5169800x0000000178218C10:1:10x0000000176F7F580KEY14(0bdec3f2b948)720575940448092160RangeS-SLOCKGRANT0335544325600TRANSACTION5169800x0000000178218C10:1:10x0000000176F80B00

40resource_typeresource_subtyperesource_database_idresource_descriptionresource_associated_entity_idresource_lock_partitionrequest_moderequest_typerequest_statusrequest_reference_countrequest_lifetimerequest_session_idrequest_exec_context_idrequest_request_idrequest_owner_typerequest_owner_idrequest_owner_guidrequest_owner_lockspace_idlock_owner_addressKEY14(ffffffffffff)720575940448092160RangeS-SLOCKGRANT0335544325600TRANSACTION5169810x0000000178218C10:1:10x0000000176F7F580KEY14(199f61d4d268)720575940448092160RangeS-SLOCKGRANT0335544325600TRANSACTION5169810x0000000178218C10:1:10x0000000176F80B00
в таблицах везде request_owner_guid=00000000-0000-0000-0000-000000000000
Получается, что dm_tran_locks по блокировкам диапазона можеть выдать ровно две строки с одним значением request_mode.
А к чему относится значение (ffffffffffff): к +inf или -inf нужно уже понять самому, исходя из порядка индекса и того какое значение resource_description во второй записи Range.

Правильно ли я это понимаю?
...
Рейтинг: 0 / 0
13.09.2020, 18:59
    #39998103
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой именно диапазон заблокирован в Range?
Диапазон всегда (prev KEY, KEY]
(ffffffffffff) это +inf
...
Рейтинг: 0 / 0
14.09.2020, 17:57
    #39998466
vi0
vi0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой именно диапазон заблокирован в Range?
invm, спасибо
вот еще ссылочку нагуглил https://www.sql.ru/forum/1289002/napravlenie-sortirovki-klasternogo-indeksa-i-range-locks
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Какой именно диапазон заблокирован в Range? / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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