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

Ошибка конфликта блокировок – одна из распространенных ошибок, возникающих в момент одновременной записи одного видов объекта несколькими пользователями. В данном случае, где-то производится запись объекта, а мы выполняем выборку данных, заблокированных для изменения.

ne-udalos-zablokirovat-tablitsu

Куда смотреть, если конфликт блокировок не проходит?

  • Бывает, в момент проведения приложение выводит модальное окно:  например, “Предупреждение”,  до тех пор, пока это окно висит, а транзакция не зафиксирована, будет возникать ошибка блокировки. Следует проверить у всех пользователей: нет ли таких ошибок.
  • Если вы программист и в процессе отладки поставили точку останова в модуле проведения, то также пока вы не продолжите код, остальные пользователи не смогут записать связанный с вашей блокировкой объект. Такие остановки на рабочих базах необходимо производить кратковременно.
  • Если производится процедура закрытия месяца, расчета себестоимости, то необходимо просто подождать, ведь такие ресурсоемкие операции производтся не так часто, если это критично, то выполнять их следует в нерабочее время. Это ж относится к операциям группового перепроведения.
  • Блокировки могут возникать в момент обмена между информационными базами (распределенными или при обмне торговли с бухгалтерией). Тут, следует обратить внимание принимаются ли подтверждения об отправляемых данных, возможно одни и теже данные посылаются постоянно, хотя они уже не меняются. Вариантом решения, когда данные приходят корректно – более частый обмен. Меньшие порции грузятся быстрее. Если ваши данные не пересекаются, то можно расмотреть вариант обмена в нерабочее время  – в обед, ночью, утром (снижается актуальность).
  • Если у вас база файловая, то такие конфликты происходят чаще, если это влияет на производительность, то следует подумать о клиент-серверном варианте
  • Установленный postrgres сервер выполнял запросы значительно медленней, чем даже бесплатная экспресс версия от Microsoft, пришлось откатиться на нее обратно.
  • На клиент серверной версии в консоли сервера можно посмотреть пользователя, который захватил больше всего объектов. Случается при формирование очень большой выборки 1С “зависает”, пользователь закрывает 1С, но запрос продолжает свое выполнение. Удаление его из консоли гораздо быстрее решает проблемуkolonki-soedineniya-s-subd
  • Файловая база в терминальном режиме работает быстрее, чем просто по сети, даже если сетка быстрая, кэширование диска выполняет свою функцию
  • ssd диски ускоряют запись, если у вас не специализированный сервер с 10 Raid, а обычный диск, то переход к ssd верное решение для нагруженных систем.
  • На более производительных серверах проблема возникает реже.
  • Настройка ограничений на проверяемые файлы в антивирусе, может снизить нагрузку на сервер и его диск
  • Использование ограничения на уровне записей, негативно сказывается на производительности, иногда из этого вытекает проблема конфликта блокировок
  • Реиндексация таблиц информационной базы может исправить ошибки, влияющие на производительность
  • Для более детального исследования проблемы можно использовать технологический журнал от 1С – специальный механизм, записывающий запросы и другие события в работе системы.

Люди глупо доверчивы… Вся реклама мира основана на трех принципах: “Хорошо, много и даром”. Поэтому можно давать скверно, мало и дорого.

— Александр Грин