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

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

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

serializable

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

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

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

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

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

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

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

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

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

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

Виды уровней изоляции транзакций 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

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

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

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

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

    Ответить

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

Ваш адрес email не будет опубликован.