Взаимоблокировки в 1С и методы их устранения



Что такое взаимоблокировки? На языке программистов определение звучит так - неразрешимый конфликт двух блокировок данных. Суть его в том, что происходит ожидание сразу нескольких пользователей (от 2-х и выше) на блокировку сведений.

При работе может отобразиться фраза «Транзакция вызвала взаимоблокировку...», это и есть сигнал того, что произошел сбой.

Остановимся сегодня на том, в чем же причина этих блокировок и каким образом можно их предотвратить.

Чтобы решить проблемный вопрос «менеджер взаимоблокировок» пытается найти конфликтную ситуацию и убирает менее значимую для СУБД транзакцию.

Центр управления производительностью помогает мониторить образование подобных редких, но все же имеющих место, проблем. Главная задача – свести их на нет.


Основные причины взаимоблокировок СУБД в 1С 8.3



1. Установка недостаточного уровня блокировки ресурса


Из-за этого чаще всего происходят взаимоблокировки. Транзакции (от 2-х о выше) скачивают информацию с помощью разделяемой блокировки (S), после чего делают попытки изменить эти сведения. Но, когда на ресурс наложена S-блокировка в какой-либо транзакции, то в остальных не будет ничего срабатывать. Финал этому – система перестает функционировать.

Решение: установить максимальный уровень изоляции.


1.2. Захват ресурсов 1С в разном порядке


Подобное возможно тогда, когда происходит блокировка разных ресурсов различными транзакциями в разной последовательности. Сбой в 1С возникает, к примеру, если есть два документа: Поступление ТМЦ и Реализация ТМЦ.

Предположим, что они «двигаются» по регистрам — «ОстаткиНаСкладах», «ОстаткиОрганизаций».

При проводке (обработке) возникнут такие строки:

Поступление ТМЦ: «ОстаткиНаСкладах.Записать()» или «ОстаткиОрганизаций.Записать()».

Реализация ТМЦ: «ОстаткиОрганизаций.Записать()» или «ОстаткиНаСкладах.Записать()».

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

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


1.3. Ошибка блокировок 1С при работе внутренних механизмов СУБД


1.3.1. Распараллеливание процессов

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

Решение: установить параметр max degree of parallelism СУБД равным «1» (обратите внимание, что изначально там стоит «0»).


1.3.2. Построение плана запроса с избыточными блокировками

Причиной может быть и СУБД. Т.к. если будет сложный запрос, то СУБД может выстроить неправильный план запроса (далекий от оптимальных параметров). Из-за чего будут заблокированы «лишние» ресурсы, это и может вызвать взаимную блокировку.

Подобное может произойти при таких условиях:

1. Идет сканирование (table scan, index scan).

2. Присутствует опция «ДЛЯ ИЗМЕНЕНИЯ».

3. Активирован автоматический способ блокировки.

Решение:

1. Оптимизировать запрос в 1С, т.е. снизить вероятность сканирования таблиц.

2. Минимизировать использование функции «ДЛЯ ИЗМЕНЕНИЯ».

3. Перевести программу в управляемый режим блокировок.


1.4. Неоптимальные запросы


Это еще одна причина, ставшая достаточно распространенной. Такие запросы, как правило, приводят к избыточным блокировкам, а это прямой путь к проблемам в работе с базой 1С.

Решение: оптимизировать запросы для увеличения производительности работы программы 1С.



Отзывы о компании

  • Сивелькина С. В. 20 марта 2017

    ПАО "НИКО-БАНК" выражает свою благодарность за оперативную и грамотную работу.
    В условиях постоянно меняющегося законодательства Банк заинтересован иметь полную и актуальную номативную базу. Это обеспечивается использованием Банком справочно-нормативной системы "Гарант". 
    Безусловным плюсом в работе компании "МастерСофт" является быстрое реагирование сотрудников при предоставлении документов по запросу Банка, принятых до обновления справочно-правовой системы.

  • Мордвинцев С. П. 25 сентября 2016

    Коллектив компании "АЭРОПОРТ ОРЕНБУРГ" выражает благодарность за взаимовыгодное сотрудничество с МастерСофт-ИТ. Оперативная поставка антивирусных программ Dr. Web обеспечила надежную защиту нашей компьтерной сети.
    Особая благодарность сотрудникам Департамента продаж СЦ ИТ за профессиональный подход в решении всех возникающих задач.

  • Ряховская Н. А. 19 июня 2017

    ООО "Орский Вагонный Завод" выражает искреннюю благодраность за качество обслуживания вашими специалистами. Консультации и поставка антивирусов всегда проходят оперативно и на высоком профессиональном уровне.
    Уверены, что и в дальнейшем наше сотрудничество на взаимовыгодных условиях продолжится.

  • Кетерер Т. М. 19 февраля 2018

    Главный бухгалтер муниципального бюджетного учреждения дополнительного образования "Дворец творчества детей и молодёжи" Кетерер Татьяна Михайловна выражает благодарность специалистам МастерСофт:
    "Я хотела бы объявить благодарность вашим сотрудникам. Работает с нами по программе "1С: Бухгалтерия бюджетного учреждения 8" непосредственно Шевлягина Юлия.
    Так же огромная благодарность за отзывчивость, терпение и квалифицированную, своевременную помощь Набокиной Олесе и Ерёменко Татьяне (они нас сопровождают по программе "Зарплата и Кадры").
    Им очень с нами тяжело, но они терпеливо продолжают сотрудничать. С вами очень надёжно. Конечно же наши ошибки есть и без вас мы бы вообще о них не знали и в суде, наверное, судились бы. А сейчас мы решаем вопросы...".