Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут!

Уровни изоляции транзакции СУБД и 1С

Сегодня мы поговорим о достаточно важном пункте для подготовки к аттестации 1С Эксперт по технологическим вопросам — Уровни изоляции транзакции.

serializable

Ранее, были рассмотрено что такое транзакции и как они работают. Теперь же речь пойдет о уровне изоляции на уровне СУБД.

Проблемы возникающие при совместной работе в системе

Ниже перечислены основные проблемы, зачем собственно и необходимо изолировать транзакции.

Грязное чтение

Чтение данных не завершенных транзакций

Неповторяемое чтение

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

Чтение фантомов

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

Виды уровней изоляции транзакций 1С

Уровни буду рассмотрены в порядке увеличения уровня изоляции

Получите 267 видеоуроков по 1С бесплатно:

READ UNCOMMITED

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

READ COMMITED

read-commited

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

REPEATABLE READ

repeatble-read

Обеспечивает решение всех проблем, кроме чтения фантомов. Если наша транзакция начала читать данные — то они захватываются до конца транзакции. Что позволяет достичь эффект повторяемого чтения. В режиме автоматических блокировок данных данный уровень изоляцией характерен для MS SQL и IBM DB2 (однако, он может быть и SERIALIZABLE).

SERIALIZABLE

serializable

Самый высокий уровень изоляции. Тоже самое что и REPEATBLE READ, за исключением того, что этот уровень блокирует еще и две соседние по индексу записи и сам диапазон индексов.

Проблемы различных уровней изоляции:

Уровни изоляции на уровне SQL

Стандартный уровень изоляции SQL — READ COMMITED.

На уровне SQL сервера можно устанавливать уровень изоляции самостоятельно для всего сеанса, например:

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

Или для конкретного запроса с помощью конструкции WITH:

SELECT Name FROM Contracts WITH SERIALIZABLE

P.S. Наша компания предоставляет услуги по настройке, доработке и комплексному внедрению 1С. Закажите бесплатный расчет стоимости вашей задачи на странице Услуги 1С или по телефону +7 (499) 350 29 00.

Остались вопросы?

СПРОСИТЕ в комментариях!

Один комментарий на “Уровни изоляции транзакции СУБД и 1С
  1. Спасибо, информация очень выручила при подготовке к экзамену!

    Ответить

Добавить комментарий: