Уровни изоляции транзакций
Уровни изоляции транзакций
Как уже было сказано выше, транзакции обеспечивают изолирование проводящихся в их контексте изменений, так что эти изменения невидимы пользователям вплоть до подтверждения транзакции. Но вот вопрос: а должна ли транзакция видеть те изменения, которые были подтверждены другими транзакциями уже после ее запуска? Вот пример.
Допустим, у нас есть таблица с данными, к которой обращаются два пользователя одновременно - один из них изменяет данные, а второй читает. Возникает вопрос, должен ли (или может ли) пользователь, читающий таблицу, видеть изменения, производимые другим пользователем.
Должен или нет - это определяется уровнем изоляции.
Уровень изолированности транзакции определяет, какие изменения, сделанные в других транзакциях, будут видны в данной транзакции.
Каждая транзакция имеет свой уровень изоляции, который устанавливается при ее запуске и остается неизменным в течение всей ее жизни.
Транзакции в InterBase могут иметь 3 основных возможных уровня изоляции: READ COMMITTED, SNAPSHOT и SNAPSHOT TABLE STABILITY. Каждый из этих трех уровней изоляции определяет правила видимости тех действий, которые выполняются другими транзакциями. Давайте рассмотрим уровни изоляции более подробно.
* READ COMMITTED. Буквально переводится как "читать подтвержденные данные", однако это не совсем (точнее, не всегда) так. Уровень изоляции READ COMMITTED используется, когда мы желаем видеть все подтвержденные результаты параллельно выполняющихся (т. е. в рамках других транзакций) действий. Этот уровень изоляции гарантирует, что мы НЕ сможем прочитать неподтвержденные данные, измененные в других транзакциях, и делает ВОЗМОЖНЫМ прочитать подтвержденные данные.
* SNAPSHOT. Этот уровень изоляции используется для создания "моментального" снимка базы данных. Все операции чтения данных, выполняемые в рамках транзакции с уровнем изоляции SNAPSHOT, будут видеть только состояние базы данных на момент начала запуска транзакции. Все изменения, сделанные в параллельных подтвержденных (и разумеется, неподтвержденных) транзакциях, не видны в этой транзакции. В то же время SNAPSHOT не блокирует данные, которые он не изменяет.
* SNAPSHOT TABLE STABILITY. Это уровень изоляции также создает "моментальный" снимок базы данных, но одновременно блокирует на запись данные, задействованные в операциях, выполняемые данной транзакцией. Это означает, что если транзакция SNAPSHOT TABLE STABILITY изменила данные в какой-нибудь таблице, то после этого данные в этой таблице уже не могут быть изменены в других параллельных транзакциях. Кроме того, транзакции с уровнем изоляции SNAPSHOT TABLE STABILITY не могут получить доступ к таблице, если данные в них уже изменяются в контексте других транзакций.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
4.20.1 Уровни в X.25
4.20.1 Уровни в X.25 Протокол X.25 имеет три уровня. Уровень связи данных называется балансированным протоколом доступа к связи (Link Access Protocol Balanced — LAPB), а сетевой уровень — уровнем пакетов X.25 (X.25 Packet Level). Владеющий оборудованием DTE пользователь устанавливает связь по X.25 с
Концепция транзакций
Концепция транзакций Что такое транзакции? В этой книге практически в каждой главе упоминаются транзакции. Понятие транзакции пронизывает всю теорию и практику работы с базами данных. Транзакции всегда, транзакции везде - вот лозунг разработчиков СУБД.Понятие
Изолированность транзакций
Изолированность транзакций Давайте углубимся в рассмотрение того, зачем нужны транзакции в базе данных. Пример с переводом денег дает верную подсказку, представляя транзакцию как некоторый черный ящик, в котором производятся действия над содержимым базы данных. В этот
Взаимодействие транзакций
Взаимодействие транзакций Интересен процесс определения, является ли текущая версия мусором или, возможно, она еще нужна какой-то транзакции.Для описания этого процесса придется ввести несколько важных понятий. Прежде всего, надо отметить, что все определения строятся
Параметры транзакций
Параметры транзакций В первом разделе этой главы была сделана попытка рассмотреть механизм работы транзакций в СУБД InterBase в целом. Теперь необходимо рассмотреть практические аспекты применяющие транзакций в InterBase.Программисты, использующие такие современные
Установка уровней изоляции
Установка уровней изоляции Итак, как было упомянуто выше, уровень изоляции транзакции определяет, какие изменения, сделанные в других транзакциях, может видеть данная транзакция.Как было сказано в разделе "Уровни изоляции", в InterBase есть 3 основных уровня изоляции.
За пределами транзакций
За пределами транзакций Мы рассмотрели общие вопросы, связанные с транзакциями, а также особенности их практического применения в базе данных. В самом начале главы было сказано, что все действия в InterBase выполняются в контексте транзакций.Однако существуют объекты, про
Уровни изоляции транзакции
Уровни изоляции транзакции В IBProvider реализована поддержка трех уровней изоляции транзакций: READ COMMITTED, REPEATABLE READ (SNAPSHOT), SERIALIZABLE (SNAPSHOT TABLE STABILITY). При работе через ADODB след>ет обратить внимание на значение свойства ADODB.Connection.IsolationLevel. Библиотека классов C++ по умолчанию
Идентификатор транзакций
Идентификатор транзакций Другая часть стратегии тайм-аутов и повторных передач заключается в использовании идентификаторов транзакций (transaction ID или XID) для распознавания запросов клиента и ответов сервера. Когда клиент вызывает функцию RPC, библиотека присваивает этому
Статистика транзакций
Статистика транзакций В Firebird есть несколько полезных утилит для получения сведений о том, насколько хорошо ваша база данных управляет зазором между OIT и OAT. Их вы можете также использовать для просмотра значений в заголовочной странице базы данных. gstat Инструмент
Уровень изоляции
Уровень изоляции Firebird предоставляет три уровня изоляции транзакций для определения "глубины" согласованности требований транзакции. В одном крайнем случае транзакция может получить исключительный доступ по записи ко всей таблице, в то время как в другом крайнем случае
Язык для транзакций
Язык для транзакций Важно обратиться к средствам реализации транзакций в Firebird. До сих пор некоторые связанные с транзакциями особенности вовсе не реализованы в динамическом SQL, а только через API. Среди небольшого количества связанных с транзакциями операторов SQL и
Завершение транзакций
Завершение транзакций Транзакция завершается, когда клиентское приложение подтверждает ее или отменяет. Если оператор COMMIT или вызов эквивалентной функции API isc_commit_ transaction не будут успешными, то транзакция не будет подтверждена. Если транзакция, которая не может быть
Восстановление транзакций
Восстановление транзакций Утилита gfix предоставляет инструменты для восстановления зависших транзакций 2РС - транзакций с несколькими базами данных после потери соединения с одной из них. Двухфазное подтверждение Транзакция, которая используется в нескольких базах
Уровни
Уровни Уровень – это горизонтальная отметка, относительно которой производятся измерения всех возвышений, то есть расположения объектов по вертикали.Вы уже знакомы с понятием нулевого уровня проекта, относительно которого измеряются возвышения всех объектов. Однако
Концепция изоляции – вариант безопасного выполнения кода
Концепция изоляции – вариант безопасного выполнения кода Под chroot в UNIX-подобных операционных системах подразумевается техника, позволяющая создать изолированную среду – имитацию корневого каталога файловой системы. Запущенная в такой среде любая программа будет