Язык программирования баз данных Informix-4GL
5c8b6e8c

Уровни блокирования


Структурные единицы, которые можно блокировать (ставить замки), отличаются размером блокируемых объектов:

  • уровень баз данных;
  • уровень таблиц;
  • уровень страниц;
  • уровень строк.
  • Блокировка на уровне базы данных открывает базу данных в режиме исключающего доступа, предотвращает доступ к ней других пользователей и выполняется посредством оператора Database с опцией Exclusive. Это может быть полезным:

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

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

    Если таблица блокирована в разделяемом режиме оператором Lock table с опцией In Share mode, то остальные пользователи будут иметь доступ на чтение в отношение таблицы (выполнять операторы Select), но не смогут выполнять операторы Delete и Update в отношении строк таблицы или Alter в отношении таблицы.

    При необходимости предотвратить любую форму доступа к таблице со стороны других пользователей необходимо выполнить блокировку таблицы в режиме исключающего доступа (Lock table с опцией In Exclusive mode).

    Informix-Online хранит данные в единицах памяти, называемых дисковыми страницами. Дисковая страница содержит одну или несколько строк.

    При создании таблицы производится выбор уровня блокировки, который используется при доступе к любой строке данных. На уровне блокировки страниц (Create table . . . lock mode page) будет блокирована вся страница независимо от того, сколько необходимо реально блокировать строк в ее составе. На уровне блокировки строк (Create table . . . lock mode row) будет блокирована только требуемая строка.

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



    Содержание раздела