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

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

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

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

Регламентные задания СУБД для 1С: дефрагментация индексов и обновление статистик

Обновлено: 26.08.2026 · Официальная документация ↗
  • Внезапная деградация скорости выполнения запросов, ранее работавших быстро («развал» плана выполнения).
  • Оптимизатор СУБД выбирает Index Scan / Table Scan вместо Index Seek.
  • Высокий уровень фрагментации индексов (более 30-50%) в таблицах движений регистров.
  • Неактуальные гистограммы распределения данных в системных каталогах.

1. Скрипт обслуживания индексов для MS SQL Server (Ola Hallengren)

Настройте еженедельное обслуживание индексов с дифференцированным подходом по уровню фрагментации:

-- Реорганизация при фрагментации от 10% до 30%, Перестроение при > 30%
EXECUTE dbo.IndexOptimize 
    @Databases = 'USER_DATABASES',
    @FragmentationLow = NULL,
    @FragmentationMedium = 'INDEX_REORGANIZE,INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
    @FragmentationHigh = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
    @FragmentationLevel1 = 10,
    @FragmentationLevel2 = 30,
    @SortInTempdb = 'Y';

2. Ежедневное обновление статистик с полным сканированием (FULLSCAN)

Для 1С критически важно обновлять статистики с параметром FULLSCAN, так как выборка по умолчанию (sample) искажает распределение на неравномерных таблицах итогов:

EXECUTE dbo.IndexOptimize 
    @Databases = 'USER_DATABASES',
    @UpdateStatistics = 'ALL',
    @OnlyModifiedStatistics = 'Y',
    @StatisticsSample = 100;

3. Обслуживание для PostgreSQL под 1С

Настройте ночные регламенты вакуумирования и сбора статистик через cron:

#!/bin/bash
# Обновление статистики всех баз 1С
vacuumdb -U postgres -d ib_production --analyze-in-stages
# Полная переиндексация критических таблиц при необходимости
psql -U postgres -d ib_production -c "REINDEX DATABASE CONCURRENTLY ib_production;"
💡 Практика специалистов: Не запускайте операцию Shrink (сжатие базы данных) после реиндексации — сжатие приводит к 99% фрагментации всех созданных индексов, сводя на нет всю регламентную процедуру.

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

Почему стандартного Auto Update Statistics в MS SQL Server недостаточно для 1С?

Автоматическое обновление срабатывает только при изменении ~20% строк таблицы. Для миллионных таблиц 1С статистика может не обновляться месяцами, что приводит к неоптимальным планам запросов.

Можно ли выполнять реиндексацию баз 1С в рабочее время?

В редакции MS SQL Enterprise/Developer доступен параметр ONLINE=ON, позволяющий перестраивать большинство индексов без блокировки чтения/записи. Однако для таблиц с полями LOB блокировка все равно возникнет.

Нужно ли очищать процедурный кэш после обновления статистик?

Обновление статистики автоматически инвалидирует связанные скомпилированные планы выполнения, поэтому принудительно выполнять DBCC FREEPROCCACHE не требуется.

Как часто нужно обновлять статистики в базах 1С?

Для высоконагруженных учетных систем (ERP, УТ, КА) обновление модифицированных статистик с FULLSCAN рекомендуется выполнять ежедневно в нерабочие часы.

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