Субд лекции

Темы:

Блокировки

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

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

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

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

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

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

предыдущаяследующая