Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

LOCK_ESCALATION_TIMEOUT 1С:Предприятие и СУБД

Устранение эскалации блокировок в MS SQL Server и PostgreSQL для 1С

Обновлено: 26.08.2026 · Официальная документация ↗
  • Массовые блокировки пользователей при попытке записи или проведения документов параллельно с отчетами.
  • Переход строчных блокировок (Row/Key-Lock) в табличные (Exclusive Table Lock).
  • Ошибки «Конфликт блокировок при выполнении транзакции» в 1С.
  • Рост длительности ожидания в ТЖ по событию TLOCKS.

1. Отключение эскалации блокировок на уровне таблиц в MS SQL Server

Для высоконагруженных регистров и таблиц документов отключите автоматическую эскалацию строк до уровня таблицы:

ALTER TABLE _AccumRgT1234 SET (LOCK_ESCALATION = DISABLE);
ALTER TABLE _Document123 SET (LOCK_ESCALATION = DISABLE);

Или отключите эскалацию для всей базы глобально через флаг трассировки 1224:

DBCC TRACEON (1224, -1);

2. Оптимизация в PostgreSQL (деактивация тяжелых блокировок)

В PostgreSQL эскалация строк до таблицы отсутствует по архитектуре (MVCC), но параллельные транзакции могут захватывать предикатные блокировки. Отредактируйте postgresql.conf:

max_locks_per_transaction = 256
lock_timeout = 20000
deadlock_timeout = 1000

3. Перевод конфигурации 1С на Управляемый режим блокировок

В конфигураторе 1С установите для свойства конфигурации «Режим управления блокировкой данных» значение Управляемый, исключив автоматический режим с неявным повышением уровня изоляции Serializable.

4. Дробление больших выборок в коде 1С

Избегайте чтения и обновления сотен тысяч записей в рамках одной транзакции:

// Выполняйте обработку порциями по 1000 - 5000 записей
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 5000 Ссылка ИЗ Документ.РеализацияТоваровУслуг ГДЕ Не Обработан";
💡 Практика специалистов: Отключение эскалации блокировок — это борьба со следствием. Первопричина всегда кроется в избыточных выборках внутри транзакций 1С или отсутствии индекса по полям отбора.

Частые вопросы (FAQ)

При каком пороге строк MS SQL Server выполняет эскалацию блокировок?

По умолчанию SQL Server инициирует эскалацию блокировок, когда одна транзакция удерживает более 5 000 блокировок на одном уровне (например, строчные X/U блокировки).

Чем опасен флаг трассировки 1224?

Флаг 1224 запрещает эскалацию по количеству блокировок, но оставляет эскалацию при нехватке памяти под lock structures. Это требует достаточного объема RAM у инстанса SQL Server.

Почему в автоматическом режиме блокировок 1С эскалация происходит чаще?

В автоматическом режиме 1С транзакции работают на уровне изоляции Serializable в MS SQL, накладывая избыточные блокировки диапазонов (Range-Locks), быстро достигающие порога эскалации.

Как обнаружить событие эскалации блокировки в MS SQL?

Настройте сессию Extended Events с событием 'lock_escalation' или отслеживайте счетчик PerfMon 'SQLServer:Locks -> Lock Escalations/sec'.

Полезные материалы
Рекомендуем