Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Блокировки при UPDATE и full scan  [new]
при UPDATE и full scan
Guest
Если я выполняю над таблицей в 1000000 записей, где есть только одна строчка с b = 1000, запрос:
UPDATE table SET a=1 WHERE b = 1000

То если есть покрывающий индекс по b, то будет поставлена только одна U-блокировка на эту запись, а если по b индекса нет, то U-блокировка будет поставлена на всю таблицу?
14 янв 12, 01:06    [11903415]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки при UPDATE и full scan  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6202
при UPDATE и full scan,

гуглите по фразе "эскалация блокировок"
14 янв 12, 01:26    [11903450]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки при UPDATE и full scan  [new]
LeadyGaaga
Member

Откуда:
Сообщений: 37
если индекса нет, то придется сканировать всю таблицу построчно : при чтении накладывается U в любом случае, далее если строка соотв. условию, то U конвертируется в X, иначе просто снимается. Если индекс есть, то будет поиск по индексу и наложение блокировки на ключ (а потом на кластерный, если поиск был по некластерному).
14 янв 12, 01:28    [11903452]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки при UPDATE и full scan  [new]
при UPDATE и full scan
Guest
LeadyGaaga
если индекса нет, то придется сканировать всю таблицу построчно : при чтении накладывается U в любом случае, далее если строка соотв. условию, то U конвертируется в X, иначе просто снимается.

Т.е. U-блокировка все таки полностью снимается ещё до окончания транзакции или если не совпало переходит в S-блокировку?

LeadyGaaga
Если индекс есть, то будет поиск по индексу и наложение блокировки на ключ (а потом на кластерный, если поиск был по некластерному).

В смысле наложение блокировки на строку или на весь индекс?
14 янв 12, 02:04    [11903523]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки при UPDATE и full scan  [new]
LeadyGaaga
Member

Откуда:
Сообщений: 37
если не совпало переходит в S-блокировку

вообще снимается при read commited. Для repeatable read при отстутствии индекса (cкане), останется S. Для serializable будет изначально наложена блокировка диапазона.

В смысле наложение блокировки на строку или на весь индекс?


Есть понятие "Блокировка ключа"
14 янв 12, 02:20    [11903544]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить