ВУЗ:
Составители:
Рубрика:
пользователю чаще всего не нужно предпринимать никаких действий по управлению
блокировками. Однако при необходимости в запросе можно явно указать, какой тип блокировки
надо использовать в том или ином случае. Команда SET LOCK_TIMEOUT позволяет регулировать
время ожидания разблокирования ресурса, по истечении которого выдается ошибка. Системная
хранимая процедура sp_configure ‘locks’, n устанавливает максимальное количество блокировок в
системе.
SQL Server 2000 поддерживает различные уровни блокирования объектов, начиная с
отдельной строки и заканчивая базой данных в целом:
RID – на уровне строки таблицы при вставке новых строк;
Key – на уровне индекса, когда блокируется его часть, соответствующая изменяемым в
транзакции данным;
Page – на уровне страницы;
Extent – на уровне экстента;
Table – на уровне таблицы;
DB – на уровне базы данных.
Основной единицей блокирования является страница, а минимальным элементом –
строка. Сервер может динамически управлять уровнем блокирования для конкретной транзакции в
зависимости от характера запросов.
Для транзакции SQL Server 2000 может устанавливать различные уровни изоляции, чтобы
делать их независимыми друг от друга. Эти уровни соответствуют рассмотренными уровням
стандарта ANSI и решают четыре проблемы одновременного доступа:
READ UNCOMMITED – незавершенное чтение: гарантируется только физическая
целостность данных;
READ COMMITED – завершенное чтение: не возникает проблемы грязного чтения;
REPEATABLE READ – повторяющееся чтение: помимо решения проблемы грязного
чтения решается проблема неповторяемого чтения;
SERIALIZABLE – сериализуемость: обеспечивает полную изоляцию транзакций друг от
друга.
Установка уровня изоляции транзакций устанавливается командой SET TRANSACTION
ISOLATION LEVEL.
В зависимости от выполняемых над данными действий SQL Server обеспечивает четыре
типа блокировок:
S (Shared) – коллективная блокировка при чтении данных несколькими пользователями;
V (Update) – блокировка обновления как подготовительная для перехода от коллективной
к монопольной блокировке;
E (Exclusive) – монопольная блокировка, если транзакция изменяет данные;
BU (Bulk update) – блокировка массового обновлении при выполнении операций
массового копирования в таблицу.
Помимо основных типов блокировок SQL Server 2000 поддерживает ряд специальных
блокировок, предназначенных для повышения производительности и функциональности
обработки данных. Блокировки этого типа называются блокировками намерения (intent locks). Они
используются сервером в том случае, если транзакция намеривается получить доступ к данным
вниз по иерархии и необходимо запретить другим транзакциям накладывать блокировки, которые
будут конфликтовать с блокировкой, накладываемой первой транзакцией.
Помимо рассмотренных блокировок
на данные SQL Server 2000 использует несколько
блокировок на метаданные, описывающие структуру объектов. Такими блокировками являются
блокировка схемы и блокировка диапазона ключа.
При работе многопользовательской системы возможны ситуации, когда две транзакции
блокируют два блока данных и для завершения работы каждой из транзакций необходим доступ к
данным, заблокированным ранее другой транзакцией. Это так называемые “
мертвые”, или
пользователю чаще всего не нужно предпринимать никаких действий по управлению
блокировками. Однако при необходимости в запросе можно явно указать, какой тип блокировки
надо использовать в том или ином случае. Команда SET LOCK_TIMEOUT позволяет регулировать
время ожидания разблокирования ресурса, по истечении которого выдается ошибка. Системная
хранимая процедура sp_configure ‘locks’, n устанавливает максимальное количество блокировок в
системе.
SQL Server 2000 поддерживает различные уровни блокирования объектов, начиная с
отдельной строки и заканчивая базой данных в целом:
RID – на уровне строки таблицы при вставке новых строк;
Key – на уровне индекса, когда блокируется его часть, соответствующая изменяемым в
транзакции данным;
Page – на уровне страницы;
Extent – на уровне экстента;
Table – на уровне таблицы;
DB – на уровне базы данных.
Основной единицей блокирования является страница, а минимальным элементом –
строка. Сервер может динамически управлять уровнем блокирования для конкретной транзакции в
зависимости от характера запросов.
Для транзакции SQL Server 2000 может устанавливать различные уровни изоляции, чтобы
делать их независимыми друг от друга. Эти уровни соответствуют рассмотренными уровням
стандарта ANSI и решают четыре проблемы одновременного доступа:
READ UNCOMMITED – незавершенное чтение: гарантируется только физическая
целостность данных;
READ COMMITED – завершенное чтение: не возникает проблемы грязного чтения;
REPEATABLE READ – повторяющееся чтение: помимо решения проблемы грязного
чтения решается проблема неповторяемого чтения;
SERIALIZABLE – сериализуемость: обеспечивает полную изоляцию транзакций друг от
друга.
Установка уровня изоляции транзакций устанавливается командой SET TRANSACTION
ISOLATION LEVEL.
В зависимости от выполняемых над данными действий SQL Server обеспечивает четыре
типа блокировок:
S (Shared) – коллективная блокировка при чтении данных несколькими пользователями;
V (Update) – блокировка обновления как подготовительная для перехода от коллективной
к монопольной блокировке;
E (Exclusive) – монопольная блокировка, если транзакция изменяет данные;
BU (Bulk update) – блокировка массового обновлении при выполнении операций
массового копирования в таблицу.
Помимо основных типов блокировок SQL Server 2000 поддерживает ряд специальных
блокировок, предназначенных для повышения производительности и функциональности
обработки данных. Блокировки этого типа называются блокировками намерения (intent locks). Они
используются сервером в том случае, если транзакция намеривается получить доступ к данным
вниз по иерархии и необходимо запретить другим транзакциям накладывать блокировки, которые
будут конфликтовать с блокировкой, накладываемой первой транзакцией.
Помимо рассмотренных блокировок на данные SQL Server 2000 использует несколько
блокировок на метаданные, описывающие структуру объектов. Такими блокировками являются
блокировка схемы и блокировка диапазона ключа.
При работе многопользовательской системы возможны ситуации, когда две транзакции
блокируют два блока данных и для завершения работы каждой из транзакций необходим доступ к
данным, заблокированным ранее другой транзакцией. Это так называемые “мертвые”, или
Страницы
- « первая
- ‹ предыдущая
- …
- 59
- 60
- 61
- 62
- 63
- …
- следующая ›
- последняя »
