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



Уровни изоляции


Уровень изоляции представляет собой степень изолированности программы от параллельных действий со стороны других программ. Informix-Online предоставляет четыре уровня изоляции:

  • Dirty Read (грязное чтение);
  • Committed Read (подтвержденное чтение);
  • Cursor Stability (чтение по установленному курсору);
  • Repeatable Read (повторяемое чтение).
  • Уровень изоляции Dirty Read

    Простейший уровень изоляции Dirty Read (грязное чтение)

    Set isolation to dirty read

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

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

    Уровень грязного чтения может быть полезен:

  • когда таблица является постоянной по содержанию и не меняется;
  • не требуется стопроцентная точность воспроизведения, а важна скорость доступа к данным и право владения ими;
  • нет возможности ждать освобождения замков.
  • Уровень изоляции Committed Read

    При использовании уровня изоляции Committed Read (подтвержденное чтение)

    Set isolation to committed read

    Informix-Online гарантирует, что никогда не вернет строку, не зафиксированную в базе данных. Это предотвращает ситуацию, соответствующую четвертому эффекту параллелизма. Перед выборкой строки сервер проверяет, установил ли обновляющий процесс блокировку этой строки. Поскольку уровень изоляции Committed Read сам не устанавливает блокировки выбранной строки, он почти столь же эффективен, как и уровень Dirty Read. Уровень изоляции Committed Read подходит для использования в тех случаях, когда каждая строка обрабатывается как независимая единица данных без ссылок на другие строки в той же самой или других таблицах и может использоваться:




    Содержание  Назад  Вперед