powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Какой именно диапазон заблокирован в Range?
3 сообщений из 3, страница 1 из 1
Какой именно диапазон заблокирован в Range?
    #39998099
vi0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день
Коллеги, помогите разобраться - хочу понять, как узнать от сервера, какой именно диапазон ключей заблокирован при 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
Какой именно диапазон заблокирован в Range?
    #39998103
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диапазон всегда (prev KEY, KEY]
(ffffffffffff) это +inf
...
Рейтинг: 0 / 0
Какой именно диапазон заблокирован в Range?
    #39998466
vi0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm, спасибо
вот еще ссылочку нагуглил https://www.sql.ru/forum/1289002/napravlenie-sortirovki-klasternogo-indeksa-i-range-locks
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Какой именно диапазон заблокирован в Range?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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