Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Блокировка данных




 

Блокировка – процедура, используемая для управления параллельным доступом к данным. Механизм блокировки позволяет некоторой транзакции путем захвата необходимого элемента данных (от БД, в целом, до отдельного поля конкретной записи) получить доступ к данным, отклоняя попытки получения такого же доступа со стороны других транзакций, пока она их не разблокирует. Это пессимистический метод управления параллелизмом.

Существует несколько различных вариантов этого механизма, но все они основаны на одном главном принципе: транзакция должна потребовать выполнить блокировку для чтения (разделяемую) или для записи (эксклюзивную) некоторого элемента данных, перед тем, как она сможет выполнить в БД соответствующую операцию чтения или записи.

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

Влияние размеров блокируемых элементов на показатели производительности БД представлены в таблице 29.

Таблица 29 – Влияние размеров блокируемых элементов

Элементы, подлежащие блокировке/ Показатели Большие по размеру (таблица) Малые по размеру (запись, поле)
1. Накладные расходы по поддержке блокировок снижаются увеличиваются
2. Возможность параллельного использования процессов снижается расширяются

 

Размер блокируемого элемента данных может быть определен в настройках среды разработчика (например, свойство соответствующего компонента Delphi), либо с помощью команд СУБД. Существуют разные модели блокировок.

1 Простая модель. Не вводится различие блокировок для операторов чтения и записи элемента данных Д. Используются две команды: установить блокировку элемента Д; снять блокировку элемента Д. При установке блокировки элемента Д предотвращается к нему доступ от других транзакций, как для выполнения операции чтения, так и для выполнения операции записи до тех пор, пока элемент Д не будет разблокирован. Это эксклюзивная или монопольная блокировка, она, как правило, автоматически устанавливается СУБД при выполнении команд Insert, Update.

2 Модель с блокировками для чтения и записи. В данной модели определено различие между видами доступа к элементу Д: доступ только для чтения; доступ только для записи. В связи с эти различают 2 типа команд блокировки:

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

б) команда блокировки элемента Д по чтению и записи. Эта команда соответствует команде блокировки простой модели, т.е. предотвращает доступ к элементу Д всем другим транзакциям.

В модели с блокировками по чтению допускается ситуация, когда транзакция может вначале установить блокировку элемента Д по записи, а затем блокировку элемента Д по чтению и записи.

Все блокировки снимаются командой «снять блокировку».

Любая блокировка осуществляются по следующим правилам.

1 Любая транзакция, которой необходимо получить доступ к элементу данных, должна вначале выполнить блокировку этого элемента. Блокировка может запрашиваться для чтения или для записи (если запись, то, естественно, и чтение).

2 Если элемент ещё не заблокирован какой—либо транзакцией, то блокировка будет выполнена успешно.

3 Если элемент данных уже заблокирован, СУБД анализирует, является ли тип полученного запроса совместимым с типом уже существующего блока. Если запрашивается доступ для чтения к элементу, который заблокирован для чтения, доступ к нему будет разрешен. В противном случае транзакция будет переведена в состояние ожидания, которое будет продолжаться до тех пор, пока существующий блок не снят.

4 Транзакция продолжает удерживать блокировку элемента данных до тех пор, пока она явным образом не освободит его – либо в ходе выполнения транзакции, либо по её окончании (успешном или неуспешном). Только после того, как с элемента данных будет снята блокировка для записи, другие транзакции смогут «увидеть» результаты проведенной операции записи.

Для обеспечения нормальной работы системы необходимо помнить и выполнять некоторые правила.

1 Не захватывать данные на более длительный период, чем объективно необходимо. Например, не полагаться на автоматическое разблокирование, а управлять разблокированием.

2 Открывать БД в режиме разделения, если изменению данных предшествует иное их использование, а захват БД осуществлять позднее.

3 Стремиться к полной или временной замене каждого полного захвата БД захватом отдельных записей или групп записей.

4 Немедленно отменять все свои блокирования, если неуспешна попытка очередного блокирования и осознана бесполезность дальнейшего ожидания.

5 Исследовать вероятность тупиков и обдумывать меры их предотвращения. Это делается в кругу пользователей с участием администратора БД.

6 Отменить блокирование может только владелец. Отмена может быть неявной — новое блокирование отменяет предыдущее.

Политика блокировок может поддерживаться самой СУБД с помощью соответствующих настроек. СУБД автоматически блокирует определенные элементы данных при выполнении определенных операторов. Если разработчика не удовлетворяют блокировки по умолчанию, он может управлять ими сам с помощью команд СУБД.





Поделиться с друзьями:


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


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



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




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