Оптимизация 1С:ERP при большом потоке заказов: устранение блокировок и ускорение работы
Если при 200+ одновременных заказах 1С:ERP начинает зависать, выдавать ошибки блокировок или проведение документов занимает минуты — это сигнал к технической оптимизации. Проблема не в железе, а в архитектуре запросов и настройках СУБД.
Почему 1С:ERP тормозит при большом потоке заказов
При сотнях одновременных заказов в день ERP-система начинает работать медленно из-за нескольких ключевых проблем:
- Конкурентные блокировки (Deadlocks): При массовом проведении документов несколько потоков одновременно обращаются к одним таблицам регистров накопления. SQL-сервер фиксирует взаимоблокировку и откатывает транзакции, что приводит к ошибкам и повторным попыткам проведения.
- Неоптимальные индексы СУБД: Таблицы регистров остатков товаров
_AccumRegразрастаются до десятков миллионов строк. Без правильных составных индексов каждый запрос выполняет полное сканирование таблицы. - Тяжёлые регламентные задания: Расчёт себестоимости, формирование планов закупок и обмен с маркетплейсами запускаются параллельно с оперативной работой пользователей, создавая пиковые нагрузки.
- Некорректные расширения: Кастомные доработки без учёта управляемых блокировок добавляют избыточные запросы в транзакции проведения документов.
Диагностика: как найти узкое место
Перед оптимизацией необходимо точно локализовать проблему. Инструменты диагностики:
- Технологический журнал 1С (ТЖ): Настраиваем сбор событий
TLOCK,DEADLOCK,EXCPдлительностью более 1000 мс. Анализируем, какие объекты блокируются чаще всего. - Центр производительности 1С (КИП): Замеряем вызовы с максимальным временем выполнения, выявляем «тяжёлые» запросы на уровне встроенного языка.
- SQL Server Profiler / pg_stat_statements: Смотрим планы выполнения SQL-запросов, находим Table Scan вместо Index Seek, дорогие сортировки и временные таблицы.
- sys.dm_exec_requests (MS SQL): Видим активные транзакции в реальном времени — кто кого блокирует и как долго ждёт.
Методы оптимизации при высоком потоке заказов
После диагностики применяю комплекс мер:
- Переход на управляемые блокировки: В конфигурации включаем режим управляемых блокировок. Это позволяет 1С самостоятельно управлять гранулярностью блокировок — не на уровне всей таблицы, а на уровне конкретных записей.
- Разделение итогов регистров: Для регистров с высокой конкурентностью (остатки товаров, взаиморасчёты) включаем разделение итогов. СУБД хранит частичные итоги по разделителям, что в разы снижает конфликты блокировок.
- Оптимизация индексов SQL: Добавляем составные индексы на колонки измерений регистров накопления. Для MS SQL используем
INCLUDEдля покрытия частых выборок. - Вынос тяжёлых заданий в ночное окно: Расчёт себестоимости, обновление агрегатов, обмен с внешними системами переносим на 02:00–06:00.
- Рефакторинг кастомных расширений: Убираем лишние запросы из обработчиков проведения документов, заменяем синхронные вызовы на асинхронные фоновые задания.
Результат: После оптимизации время проведения одного заказа снижается с 3–10 секунд до 200–500 мс. Система выдерживает нагрузку в 5–10 раз выше без ошибок блокировок.
Стоимость и сроки оптимизации 1С:ERP
| Задача | Трудозатраты |
|---|---|
| Диагностика и анализ узких мест (ТЖ + SQL) | от 3 часов |
| Оптимизация индексов и разделение итогов | от 4 часов |
| Переход на управляемые блокировки + тестирование | от 8 часов |
| Рефакторинг кастомных расширений | от 10 часов |
1С:ERP тормозит при пиковой нагрузке?
Подключусь к вашей системе, проведу диагностику через Технологический журнал и SQL Profiler, найду точное узкое место и устраню его. Работаю с базами любого размера.
Заказать оптимизацию ERP →