Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Режимы блокировки — до 20 мин

Уровни блокировок — до 15 мин.

 

Блокировки могут захватываться по целому ряду ресурсов; тип ресурса определяет уровень детализации данной блокировки. В таблице 10.1 приводится список ресурсов, которые может блокировать SQL Server, начиная с самого подробного и до самого крупного уровня детализации.

 

Таблица 10.1 — Блокируемые ресурсы

Ресурс Тип блокировки Описание
Идентификатор строки Уровень строки Блокирует отдельную строку в таблице
Ключ Уровень строки Блокирует отдельную строку в индексе
Страница Уровень страницы Блокирует отдельную страницу размером 8 Кб в таблице или индексе
Экстент Уровень экстента Блокирует экстент – группу из 8 последовательных страниц данных или страниц индекса
Таблица Уровень таблицы Блокирует всю таблицу
База данных Уровень БД Блокирует всю базу данных

 

При снижении уровня детализации снижается степень параллельности. Например, блокировка всей таблицы с помощью определенного типа блокировки может заблокировать доступ к этой таблице другим пользователям. Но при этом снижается объем передачи дополнительной служебной информации (непроизводительные затраты), поскольку используется меньшее количество блокировок. По мере повышения уровня детализации, например, до уровня блокировки страниц и строк, уровень параллельности возрастает, поскольку увеличивается количество пользователей, одновременно получающих доступ к различным страницам и строкам в таблице. В этом случае увеличиваются также непроизводительные затраты, поскольку при отдельном доступе к большому числу строк или страниц требуется больше блокировок.

SQL Server автоматически выбирает тип блокировки, подходящий для данной задачи, минимизируя при этом непроизводительные затраты на блокировку. SQL Server также автоматически определяет режим блокировки для каждой транзакции, касающейся блокируемого ресурса; ниже приводится описание этих режимов.

 

 

Режим блокировки указывает, каким образом одновременно работающие пользователи (или транзакции) могут осуществлять доступ к какому-либо ресурсу. Захват каждого типа блокировки происходит в одном из этих режимов. Имеется шесть режимов блокировки: разделяемая блокировка (shared), блокировка изменений (update), монопольная блокировка (exclusive), блокировка намерения (intent), блокировка схемы (schema) и блокировка массовых изменений (bulk update).

Режим разделяемой блокировки используется только для операций чтения, таких как операции с помощью оператора SELECT. Этот режим позволяет одновременно выполняемым транзакциям выполнять чтение одного и того же ресурса, но при этом ни одна из транзакций не может модифицировать этот ресурс. Разделяемые блокировки освобождаются сразу после окончания чтения, за исключением случаев, когда степень изолированности задана на уровне повторяемого чтения или более высоком уровне или в транзакции задана подсказка блокировки, подавляющая это поведение.

Режим блокировки изменений используется для случаев, когда в данный ресурс могут быть внесены изменения. Только одна транзакция может захватывать блокировку изменений по определенному ресурсу. Если транзакция вносит изменения (например, когда по условию поиска найдены строки для модификации), то блокировка изменений преобразуется в монопольную блокировку (описана ниже); иначе она преобразуется в разделяемую блокировку.

Режим монопольной блокировки используется для операций, модифицирующих данные, таких как обновления, вставки и удаления. При захвате транзакцией монопольной блокировки по какому-либо ресурсу никакая другая транзакция не может выполнять чтение или модификацию этого ресурса. Этот режим блокировки препятствует тому, чтобы одновременно работающие пользователи изменяли одни и те же данные, что может приводить к ошибкам в данных.

Режим блокировки намерения используется для создания иерархической структуры блокировок. Например, блокировка намерения на уровне таблицы указывает, что SQL Server предполагает захватывать блокировку по одной или нескольким страницами или строкам этой таблицы. Обычно в случае, когда в транзакции требуется захватить блокировку по какому-либо ресурсу, SQL Server сначала проверяет, существуют ли блокировки намерений для данного ресурса. Если блокировка намерения захвачена транзакцией, которая находится в состоянии ожидания этого ресурса, то вторая транзакция не может захватить монопольную блокировку. Если не существует ни одной транзакции, владеющей блокировкой намерения и ожидающей данный ресурс, то текущая транзакция может захватить монопольную блокировку по этому ресурсу. Существует три следующих типа режимов блокировки намерения:

· Разделяемое намерение (Intent shared). Указывает, что в транзакции предполагается наложить на ресурс разделяемую блокировку.

· Монопольное намерение (Intent exclusive). Указывает, что в транзакции предполагается наложить на ресурс монопольную блокировку.

· Разделяемо-монопольное намерение (Shared with intent exclusive). Указывает, что в транзакции предполагается наложить разделяемую блокировку на некоторые ресурсы и монопольную блокировку на другие ресурсы.

Режим блокировки схемы используется в тех случаях, когда выполняется операция изменения схемы таблицы, такая как добавление колонки в таблицу, или когда компилируются запросы. Для таких случаев существует два типа блокировок схемы: блокировка модификации схемы (Sch-M) и блокировка стабильности схемы (Sch-S). Блокировка модификации схемы используется при выполнении операции языка определения данных таблицы (DDL). Блокировка стабильности схемы используется для компиляции запросов. Когда происходит компиляция запроса, другие транзакции могут одновременно с этим запускать и захватывать блокировки по данной таблице (даже монопольные блокировки), но операторы DDL не могут применяться к таблице, если задана блокировка стабильности схемы.

Режим блокировки массовых изменений используется, когда вам нужно выполнить массовое копирование данных в таблицу с подсказкой блокировки TABLOCK или когда вы задаете параметр table lock on bulk load с помощью хранимой процедуры sp_tableoption. Целью блокировки массовых изменений является предоставление процессам разрешения на параллельное массовое копирование данных в одну таблицу, запрещая при этом доступ к этой таблице любым процессам, которые не выполняют массового копирования.

 

<== предыдущая лекция | следующая лекция ==>
Блокировка транзакций — до 15 мин | Блокирование и взаимоблокировки — до 20 мин
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 443; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.