Причины избыточных блокировок в 1С
Умение найти и «обезвредить» причину избыточных блокировок — одна из самых интересных и сложных задач, стоящих перед экспертом или программистом 1С 8.3.
Ниже речь пойдет о причинах возникновения избыточных блокировок и методах решения этой проблемы.
Среди наиболее часто встречаемых причин избыточных блокировок можно выделить следующие:
- неоптимальная работа запросов;
- неправильное использование объектов конфигурации: последовательности, константы, регистры накопления, регистры бухгалтерии, планы обмена;
- чтение остатков в начале транзакции;
- избыточные блокировки СУБД.
Содержание
Неоптимальная работа запросов
Подробнее Вы можете прочесть в статье причины неоптимальной работы запросов.
Среди основных причин:
- использование подзапросов в условии соединения;
- фильтрация виртуальных таблиц без использования параметров;
- соединения с подзапросами;
- соединения с виртуальными таблицами;
- несоответствие индексов и условий запроса;
- использование логического ИЛИ в условиях;
- получение данных через точку от полей составного типа.
Чтение остатков в начале транзакции
Контроль остатков очень распространенная операции. При этом, если есть возможность, необходимо размещать запрос, считывающий актуальные остатки, как можно ближе к концу транзакции.
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Причина в том, что чтение остатков запросом блокирует записи до конца транзакции — следовательно, устанавливается блокировка до конца транзакции. Чем ближе к концу установлено чтение, тем выше параллельность системы.
Избыточные блокировки СУБД
Недопустимо использование некоторых СУБД для серьезных многопользовательских решений. Это связано с тем, что для работы эти СУБД используют очень высокий уровень изоляции транзакций.
Использование следующих СУБД нежелательно для многопользовательского режима:
- PostgreSQL (режим автоматических блокировок);
- Oracle (режим автоматических блокировок);
- файловый режим 1С.
Неправильное использование объектов конфигурации
Рассмотрим подробнее каждый объект метаданных:
Константы
Не рекомендуется часто изменять данные констант, т.к. при работе с одной константой блокируется вся таблица констант (с 1С 8.2.15 константы разнесены по отдельным таблицам).
Последовательности
Не рекомендуется изменять границу последовательностей при проведении документов.
Регистры бухгалтерии и регистры накопления
Рекомендации идентичны: при оперативной работе рекомендуется использовать режим разделения итогов — он позволяет существенно распараллелить работу пользователей. Также рекомендуется как можно позже производить чтение остатков в транзакции.
Планы обмена
Т.к. планы обмена блокируют таблицы изменения всех объектов, включенных в состав плана обмена, рекомендуется производить обмены либо в нерабочее время, либо маленькими порциями, чтобы блокировки были небольшими по времени.
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
СПРОСИТЕ в комментариях!