Блокировки в MS SQL Server 2000
Категория реферата: Рефераты по информатике, программированию
Теги реферата: реферат на тему мыло, контрольная работа 7
Добавил(а) на сайт: Васёна.
Предыдущая страница реферата | 20 21 22 23 24 25 26 27 28 29 30 | Следующая страница реферата
Простые блокировки
SQL Server поддерживает три основных типа блокировок:
Разделяемая блокировка (Shared Lock), обозначается латинской буквой S. Эта самый распространенный тип блокировки, который используется при выполнении операции чтения данных. Гарантируется что данные, на которые она наложена, не будут изменены другой транзакцией. Однако чтение данных возможно.
Монопольная блокировка (Exclusive Lock), обозначается латинской буквой X. Этот тип применяется при изменении данных. Если на ресурс установлена монопольная блокировка, гарантируется, что другие транзакции не могут не только изменять данные, но даже читать их.
Блокировка обновления (Update Lock), обозначается латинской буквой U. Эта блокировка является промежуточной между разделяемой и монопольной блокировкой. Так как монопольная блокировка не совместима ни с одним видом других блокировок (есть одно исключение, о котором попозже), ее установка приводит к полному блокированию ресурса. Если транзакция хочет обновить данные в какой-то ближайший момент времени, но не сейчас, и, когда этот момент придет, не хочет ожидать другой транзакции, она может запросить блокировку обновления. В этом случае другим транзакциям разрешается устанавливать разделяемые блокировки, но не позволяет устанавливать монопольные. Другими словами, если данная транзакция установила на ресурс блокировку обновления, никакая другая транзакция не сможет получить на этот же ресурс монопольную блокировку или блокировку обновления до тех пор, пока установившая блокировку транзакция не будет завершена.
Прежде чем идти дальше, давайте рассмотрим небольшой пример. Для просмотра текущих блокировок существует системная хранимая функция sp_lock. Она возвращает информацию о блокировках в формате, описанном в таблице 2.
Имя колонки |
Описание |
spid |
Идентификатор процесса SQL Server. |
dbid |
Идентификатор базы данных. |
ObjId |
Идентификатор объекта, на который установлена блокировка. |
IndId |
Идентификатор индекса. |
Type |
Тип объекта. Может принимать значения: DB, EXT, TAB, PAG, RID, KEY. |
Resource |
Содержимое колонки syslocksinfo.restext. Обычно это идентификатор строки (для типа RID) или идентификатор страницы (для типа PAG). |
Mode |
Тип блокировки. Может принимать значения: Sch-S, Sch-M, S, U, X, IS, IU, IX, SIU, SIX, UIX, BU, RangeS-S, RangeS-U, RangeIn-Null, RangeIn-S, RangeIn-U, RangeIn-X, RangeX-S, RangeX-U, RangeX-X. Об этих значениях будет сказано ниже. |
Status |
Статус процесса SQL Server. Может принимать значения: GRANT, WAIT, CNVRT. |
Эта процедура возвращает данные о блокировках из системной таблицы syslockinfo, которая находится в базе данных master.
ПРИМЕЧАНИЕ Информация именно из этой таблицы используется менеджером блокировок для определения совместимости блокировок при запросе ресурсов транзакциями. |
Во всех примерах используется таблица test, которая создается следующим скриптом:
create table test(i int, n varchar(20)) insert into test values(1,’alex’) insert into test values(2,’rosa’) insert into test values(3,’dima’) |
Во-первых, давайте действительно убедимся, что при чтении данных с уровнем изоляции ниже REPEATABLE READ разделяемые блокировки снимаются сразу же после извлечения данных:
print @@spid begin tran select * from test |
Мы начали транзакцию, но оставили ее открытой. Для того чтобы посмотреть, какие блокировки наложены предыдущим скриптом, вызовем процедуру sp_lock (в другой сессии) с параметром, выведенным print @@spid (у меня это 54).
СОВЕТ Текущее значение идентификатора процесса сервера можно увидеть в строке состояния программы Query Analizer. |
sp_lock 54 |
Результат приведен в таблице 3.
spdi |
dbid |
ObjId |
IndId |
Type |
Resource |
Mode |
Status |
54 |
8 Рекомендуем скачать другие рефераты по теме: решебник по физике, украинские рефераты. Предыдущая страница реферата | 20 21 22 23 24 25 26 27 28 29 30 | Следующая страница реферата Поделитесь этой записью или добавьте в закладкиКатегории: |