Cтраница 1
Разделяемые блокировки полезны в операциях только для чтения, но не очень нужны при модификации данных. В таких ситуациях SQL-сервер выбирает более мощный механизм блокирования информации. [1]
Теперь SQL-сервер сохраняет активной разделяемую блокировку для таблицы customer flights активной до окончания всей транзакции. Это означает, что блокировка остается даже при обращении к другим таблицам. Этот режим сильно ограничивает работ) параллельных пользователей, и при неправильном применении он чреват многочисленными проблемами. [2]
Установка PAGLOCK указывает SQL-серверу на необходимость формирования разделяемых блокировок на уровне страниц ( page), а не на табличном уровне. В результате значительно повышается число блокировок в транзакции, следовательно, существует вероятность исчерпать этот ресурс. Однако повышается и параллельность работы, так как появляется возможность модифицировать другие, незаблокированные страницы таблицы. [3]
Когда задана установка UPDLOCK, SQL-сервер вместо более мягких разделяемых блокировок ( установка по умолчанию) применяет блокировки обновления для всех нужных страниц. [4]
При помощи этого запроса для таблицы customer flights устанавливается разделяемая блокировка до тех пор, пока не будут считаны все указанные строки. [5]
Блокировка такого типа сообщает о готовности процесса к установлению разделяемой блокировки для страницы. [6]
SQL-сервер создает целевую блокировку, планируя запросить исключающую или разделяемую блокировку страницы. Целевая блокировка сообщает другим процессам, что они не могут установить свои исключающие блокировки для указанного ресурса. [7]
Задание этого параметра означает, что оператор SELECT не будет запрашивать разделяемые блокировки для страниц данных. Кроме того, если во время выполнения запрос встречается существующая блокировка, то она игнорируется и информация все равно возвращается. Не забывайте, что данный процесс влияет на целостность данных, так как программа может выбирать строки-фантомы. Более подробно об уровне изоляции транзакций READ UNCOMMITTED рассказано в этой главе выше. [8]
Ранее было описано, как SQL-сервер применяет обновляющую блокировку для резервирования страницы, которую необходимо изменить. Изменить в данном контексте означает ввести, обновить или удалить информацию. Когда первым в операции обновления данных идет оператор SELECT, то вместо более привычных разделяемых блокировок в этом операторе можно указать обновляющие. Применение в запросе обновляющих блокировок гарантирует, что данные, к которым обращается запрос, не будут изменены другими пользователями или процессами. Обновляющие блокировки сохраняют исходное состояние данных до их обновления. [9]