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

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

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

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

Обновление статистики PostgreSQL для 1С (команда ANALYZE): ускорение запросов

Обновлено: 26.08.2026 · Официальная документация ↗
  • После массового проведения документов или закрытия месяца 1С начала сильно тормозить при формировании стандартных отчетов (ОСВ, карточка счета).
  • Простые проводки и открытие списков документов происходят с задержкой в несколько секунд.
  • Планировщик запросов PostgreSQL строит неоптимальные планы выполнения (Seq Scan вместо Index Scan) из-за устаревшей статистики таблиц.

Зачем нужно обновлять статистику в PostgreSQL?

PostgreSQL выбирает самый быстрый способ выполнения запроса 1С на основе математической статистики о распределении данных в таблицах. Если в базу загрузили много документов, а статистика не обновилась, СУБД начинает перебирать миллионы строк «вслепую», что приводит к критическим тормозам 1С.

Способ 1. Быстрое обновление через командную строку (Linux / Windows)

  1. Откройте терминал на сервере (или командную строку от имени Администратора в Windows).
  2. Переключитесь на системного пользователя postgres (в Linux: sudo -u postgres -i).
  3. Выполните команду полного сбора статистики для вашей базы 1С:
vacuumdb -U postgres -d имя_вашей_базы -z -v

Ключ -z запускает команду ANALYZE (сбор статистики), а -v выводит подробный отчет о процессе.

Способ 2. Запуск через pgAdmin (графический интерфейс)

  1. Запустите программу pgAdmin и подключитесь к вашему серверу PostgreSQL.
  2. В левом дереве раскройте раздел Databases (Базы данных).
  3. Нажмите правой кнопкой мыши по вашей базе 1С и выберите пункт «Query Tool» (Инструмент запросов).
  4. В открывшемся окне введите команду:
ANALYZE VERBOSE;
  1. Нажмите кнопку Execute (значок Play или клавиша F5) и дождитесь завершения операции.

Способ 3. Автоматизация в автовакууме (postgresql.conf)

Чтобы статистика всегда была актуальной без ручного вмешательства, откройте конфигурационный файл postgresql.conf и проверьте следующие параметры:

autovacuum = on
autovacuum_analyze_scale_factor = 0.05
autovacuum_analyze_threshold = 50

После изменения настроек перезапустите службу PostgreSQL: systemctl restart postgresql.

💡 Практика специалистов: Для баз 1С на PostgreSQL критически важно настроить autovacuum_analyze_scale_factor = 0.02-0.05 (по умолчанию 0.1), иначе на таблицах с миллионами записей статистика не будет обновляться неделями.

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

Блокирует ли команда ANALYZE работу пользователей в 1С?

Нет! Команда ANALYZE берет только кратковременную легкую блокировку на чтение и читает случайную выборку страниц таблицы. Пользователи могут спокойно продолжать работать в 1С.

В чем разница между VACUUM и ANALYZE?

VACUUM очищает таблицы от 'мертвых строк' (удаленных версий записей) и освобождает место для новых данных, а ANALYZE собирает статистику распределения значений для планировщика запросов.

Как часто нужно запускать ANALYZE вручную?

Рекомендуется выполнять ANALYZE после масштабных операций: загрузки базы из файла .dt, группового перепроведения документов за прошлые периоды или свертки базы.

Сколько времени занимает выполнение ANALYZE на базе 100 Гб?

Обычно от 1 до 5 минут, так как утилита не сканирует всю таблицу целиком, а производит быструю статистическую выборку.

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