Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety1_moi.docx
Скачиваний:
7
Добавлен:
15.04.2019
Размер:
819.58 Кб
Скачать

10.4.2. Блокировки

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

Обобщенная схема классификации блокировок приведена на рис. 10.6.

Блокировки накладываются в соответствии с правилами совмес­тимости блокировок, исключающими конфликты чтение-запись, запись-чтение и запись-запись. Сериализуемость транзакций заведомо гарантируется, если блокировки, относящиеся к одновременно вы­полняемым транзакциям, удовлетворяют следующему правилу: «Ни одна блокировка от имени какой-либо транзакции не должна уста­навливаться, пока не будет снята ранее установленная блокировка». Это правило известно под названием двухфазового блокирования, поскольку транзакция проходит при этом сначала фазу роста, когда она устанавливает блокировки, а затем фазу сжатия, когда блоки­ровки снимаются. В общем случае снятие блокировок до завершения транзакции проблематично, поэтому в большинстве алгоритмов уп­равления одновременным доступом применяется подход, когда бло­кировки не снимаются до конца транзакции.

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

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

Бывает, что уровни блокирования определяются в терминах фи­зических единиц информации. Уровень блокирования может зависеть не только от СУБД, но и от операционной системы и даже от архитек­туры компьютера. В этом случае необходимо знать специфику конк­ретной платформы, на которой реализована система. Объектами бло­кирования могут являться страница (page), группа страниц, область базы данных (dbspace) и др. Терминология и реализация в значитель­ной степени зависят от конкретной системы.

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

В конкретных СУБД могут быть реализованы не все, а только не­которые из перечисленных уровней блокировок. Так, практически нигде не реализована блокировка на уровне поля. В Microsoft SQL Server только начиная с версии 6.5 был добавлен уровень блокировки записи, и то только для операций типа INSERT. В dBase, FoxPro предусматривается блокировка на уровне таблиц и записей.

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

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

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

Оптимистические блокировки разрешают параллельное выпол­нение транзакций, отслеживают случаи возникновения конфликтов и обеспечивают их разрешение.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]