Блокировки в 1С 8.3 и СУБД
В нашей статье расскажем про блокировки на следующих уровнях: в 1С 8.3 и 8.2; в СУБД. Разберем принцип их действия, и разновидности. Если в системе работает более одного пользователя, то обязательно нужна опция «Блокировка данных».
Блокировка демонстрирует, что системными ресурсами завладел «чужой» пользователь. Некоторые приравнивают ее к ошибке. Но это не так. Блокировка предназначена для разделения ресурсов, она является вынужденной и крайне необходимой мерой для работы в многопользовательском режиме.
На ряду с положительными действиями, из-за избыточного количества блокировок вполне может произойти и отрицательный эффект для системы. Их порою называют «лишними» за то, что они своим влиянием слишком много информации охватывают. Такие блокировки надо убирать, т.к. они способны сделать систему малоэффективной.
Типы блокировок 1С
Они подразделяются на объектные и транзакционные. Первые делятся на оптимистические и пессимистические. А вторые на управляемые и автоматические.
Объектные
Этот вид блокировок внедрен целиком в 1С и никоим образом не касается СУБД.
Пессимистические
Они активируются, когда, к примеру, вы поменяли что-либо в справочнике, а другой ваш коллега то же делает попытки корректировки объекта в форме.
Оптимистические
Блокировка проводит сравнение версий объекта. Т.е., когда два пользователя «зашли» в форму, и один внес изменения и сохранил объект, то другой в процессе записи получит от системы сообщение об ошибке - о возникновении отличия в вариантах объектов.
Транзакционные
Это интересный механизм со множеством функций, в отличие от перечисленных выше. В нем действуют блокировки на уровне СУБД.
Применять их следует с осторожностью, чтобы не было проблемных моментов на разных уровнях изоляции транзакций.
Автоматические транзакционные блокировки 1С и СУБД
В этом режиме все блокировки осуществляет СУБД. Программисты не могут никак повлиять на процесс. При этом разработчикам несколько проще выполнять свои действия, но пользователям не рекомендуется создавать здесь информационную систему (в особенности для СУБД PostgreSQL, Oracle BD, т.к. в процессе модификации сведений они заблокируют всю табличную часть).
Для различных СУБД в автоматическом режиме применяют такие степени изоляции:
1. SERIALIZABLE целиком на таблицу – файловый режим 1С, PostgreSQL, Oracle.
2. SERIALIZABLE на записи – MS SQL, IBM DB2 (работая с не объектными сущностями).
3. REPEATABLE READ на записи – MS SQL, IBM DB2 (с объектными).
Управляемые режимы транзакционных блокировок 1С и СУБД
При таком варианте вся ответственность должна ложиться на производителя программного продукта 1С. Отметим, что СУБД назначает повышенный уровень изоляции для транзакций — READ COMMITED.
Взаимодействуя с БД, менеджер блокировок 1С проводит анализ – возможен ли «захват» ресурса. Важно понимать, что блокировки, проведенные одним исполнителем совместимы в любом случае.
Но существует ситуация, при которой две блокировки НЕ состыкуются ни при каких обстоятельствах:
1. Их сделали разные пользователи.
2. Несовместимые виды.
3. Установили на один ресурс.
Физическая реализация блокировок в СУБД
Мы говорим о таблице, находящейся в БД под именем «master». А таблица блокировок обозначается словом «syslockinfo».
В таблице есть четыре ячейки:
1. ИД блокирующей сессии SPID.
2. Что конкретно захвачено RES ID.
3. Типы блокировки — S, U или X MODE (их, конечно же, значительно больше, но в 1С применяют лишь эти три).
4. Состояние блокировки — есть два понятия: GRANT (установлена) и WAIT (в очереди).
Чтобы завершить транзакции на уровне SQL как правило применяют команду KILL и указывают идентификатор сессии: KILL SPID/
Какие типы блокировок 1С совместимы?
|
S |
U |
X |
S |
+ |
+ |
- |
U |
+ |
- |
- |
X |
- |
- |
- |
На данном сайте мы используем фаилы cookie, чтобы сделать Вашу работу наиболее комфортной. Продолжая пользоваться нашим сайтом, не меняя настроек, Вы тем самым выражаете согласие на использование нами данных фаилов. Более подробно Вы можите почитать о них в раздела Политика конфиденциальности.