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

Откуда: Москва
Сообщений: 1176
Пока только такое прочел. Может кто подробней расскажет?

In some cases, however, if SQL Server determines that a query will access a range of rows within a clustered index , it may instead acquire page locks. After all, if every row on a page is going to be accessed, it's easier to manage a single page lock than dozens, or hundreds, of row locks. In other cases, primarily when there is no usable index to help process a query, SQL Server may lock an entire table right at the beginning of processing a querу
20 окт 16, 11:05    [19803461]     Ответить | Цитировать Сообщить модератору
 Re: Когда сервер блокирует страницу s блокировкой?  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
Конкретная ситуация такая:
открывается транзакция RC
Вставляется много строк (identity кластерный)
Читаются эти строки с фильтром пк


Это в нескольких конекшенах.
И получаем дедлок. Вставка дает ix на страницы - это очевидно.
А вот чтение хочет S на те же страницы, что смутило.
20 окт 16, 11:17    [19803543]     Ответить | Цитировать Сообщить модератору
 Re: Когда сервер блокирует страницу s блокировкой?  [new]
TaPaK
Member

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

эскалация блокировок, как вариант
20 окт 16, 13:38    [19804537]     Ответить | Цитировать Сообщить модератору
 Re: Когда сервер блокирует страницу s блокировкой?  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
TaPaK,
подробнее со ссылочками?

Эскалация вроде как до таблиц либо секций only
20 окт 16, 13:41    [19804550]     Ответить | Цитировать Сообщить модератору
 Re: Когда сервер блокирует страницу s блокировкой?  [new]
TaPaK
Member

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

https://technet.microsoft.com/ru-ru/library/ms184286(v=sql.105).aspx
20 окт 16, 13:42    [19804558]     Ответить | Цитировать Сообщить модератору
 Re: Когда сервер блокирует страницу s блокировкой?  [new]
invm
Member

Откуда: Москва
Сообщений: 9825
Mike_za,

Гранулярность блокировки сервер всегда определяет самостоятельно, даже когда она явно указана в запросе хинтом. Может у вас индексы с allow_row_locks off?

TaPaK
эскалация блокировок, как вариант
Не бывает эскалации до уровня страницы.
20 окт 16, 15:04    [19804979]     Ответить | Цитировать Сообщить модератору
 Re: Когда сервер блокирует страницу s блокировкой?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
invm
Mike_za,

Гранулярность блокировки сервер всегда определяет самостоятельно, даже когда она явно указана в запросе хинтом. Может у вас индексы с allow_row_locks off?

TaPaK
эскалация блокировок, как вариант
Не бывает эскалации до уровня страницы.

точно, и действительно судя по всему стоит ALLOW_ROW_LOCKS = OFF
20 окт 16, 15:35    [19805121]     Ответить | Цитировать Сообщить модератору
 Re: Когда сервер блокирует страницу s блокировкой?  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
ALLOW_ROW_LOCKS = ON
Стоит
20 окт 16, 15:50    [19805198]     Ответить | Цитировать Сообщить модератору
 Re: Когда сервер блокирует страницу s блокировкой?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Mike_za
ALLOW_ROW_LOCKS = ON
Стоит

и хинта нет?
20 окт 16, 15:54    [19805219]     Ответить | Цитировать Сообщить модератору
 Re: Когда сервер блокирует страницу s блокировкой?  [new]
АвторОтвета
Guest
Mike_za,
Physical design does matter.

Схему таблицы в студию - data types, triggers, constraints, indexes.
Будет ещё лучше если есть - deadlock graph, план выполнения из кеша.
20 окт 16, 16:31    [19805404]     Ответить | Цитировать Сообщить модератору
 Re: Когда сервер блокирует страницу s блокировкой?  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
Как разрулить ту конкретную проблему вопрос уже не стоит. Там был неудачный код, который легко убирается. Вопрос чисто про теорию
20 окт 16, 20:44    [19806236]     Ответить | Цитировать Сообщить модератору
 Re: Когда сервер блокирует страницу s блокировкой?  [new]
TaPaK
Member

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

Какую? Читатели vs vs писатели?- rcsi .. страницы по умолчанию никто не блокирет... Что тут еще из теории :)
20 окт 16, 23:10    [19806567]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить