Добавить в корзинуПозвонить
Найти в Дзене
Postgres DBA

online_analyze.enable - описание

online_analyze.enable — это пользовательский параметр (GUC) расширения online_analyze для PostgreSQL. Он служит главным переключателем, который включает или отключает всё расширение.
ℹ️Модуль online_analyze предназначен для немедленного обновления статистики таблиц после операций, изменяющих данные (INSERT, UPDATE, DELETE, SELECT INTO, COPY). Это обеспечивает планировщик запросов всегда
Оглавление

online_analyze.enable — это пользовательский параметр (GUC) расширения online_analyze для PostgreSQL. Он служит главным переключателем, который включает или отключает всё расширение. 

📖 Назначение

ℹ️Модуль online_analyze предназначен для немедленного обновления статистики таблиц после операций, изменяющих данные (INSERT, UPDATE, DELETE, SELECT INTO, COPY). Это обеспечивает планировщик запросов всегда актуальной информацией, что позволяет ему строить оптимальные планы выполнения. В стандартной конфигурации PostgreSQL статистика обновляется с задержкой фоновым процессом autovacuum.

Параметр online_analyze.enable используется для полного включения или отключения этой функции. 

🛠️ Статус по умолчанию

· Значение по умолчанию: on (онлайн-анализ включен). 

· Тип значения: bool.

· Контекст установки: Для применения изменений обычно требуется перезагрузка конфигурации (SIGHUP) (точный контекст лучше уточнить в официальной документации).

🎯 Зачем это нужно

➡️Основная цель — решение проблемы, когда оптимизатор PostgreSQL выбирает неэффективные планы запросов (например, использует Seq Scan вместо Index Scan) из-за устаревшей статистики в активно изменяемых таблицах. 

⚠️ Актуальный статус и рекомендации для 1С

ℹ️Важно отметить, что в современных конфигурациях наиболее частый сценарий использования — с платформой 1С:Предприятие — кардинально изменился.

· ⚠️Для современных версий 1С: Настоятельно не рекомендуется использовать этот модуль. 

· Причина: Начиная с версии 8.3.13, платформа 1С самостоятельно и в нужный момент выполняет команду ANALYZE для своих временных таблиц. Параллельное использование online_analyze в этом случае становится избыточным и приводит лишь к дополнительному расходу ресурсов сервера без практической пользы. 

· Рекомендация: Для систем на базе актуальных версий 1С параметр online_analyze.enable следует явно установить в значение off. 

· Исторический контекст: Ранее, до версии 1С 8.3.13, включение online_analyze (особенно для временных таблиц online_analyze.table_type = 'temporary') было стандартной рекомендацией для повышения производительности. 

🎛️ Взаимодействие с другими параметрами

Если online_analyze.enable = off, то все остальные параметры модуля игнорируются.

Если online_analyze.enable = on, на поведение модуля влияют следующие ключевые параметры (в скобках указаны значения по умолчанию):

· online_analyze.table_type ("all"): Определяет, для каких типов таблиц выполняется немедленный анализ: all (все), persistent (постоянные), temporary (временные), none (никакие). Важно: для 1С версии 8.3.13+ это рекомендуется устанавливать в none.

· online_analyze.threshold (50): Минимальное количество строк, которое должно быть изменено в таблице с момента последнего ANALYZE, чтобы модуль запустил новую операцию анализа.

· online_analyze.scale_factor (0.1): Доля измененных строк от общего размера таблицы, при достижении которой запускается немедленный анализ.

· online_analyze.min_interval (10000): Минимальный интервал времени в миллисекундах между последовательными вызовами ANALYZE для одной и той же таблицы. Предотвращает слишком частый запуск анализа.

· online_analyze.local_tracking (off): Включает отслеживание статистики для временных таблиц в рамках конкретного обслуживающего процесса. Если off, используется системная статистика по умолчанию.

· online_analyze.verbose (on): Выполняет ANALYZE VERBOSE, выводя подробные сообщения о процессе анализа в лог сервера.

📋 Примеры использования

1. Глобальная настройка в postgresql.conf:

# Отключаем модуль для всех баз данных на сервере

online_analyze.enable = off

2. Изменение параметра без перезагрузки сервера (в сессии):

-- Включаем онлайн-анализ в текущей сессии

SET "online_analyze.enable" = on;

3. Изменение параметра для всех сессий на лету:

-- Включаем онлайн-анализ глобально до перезагрузки конфигурации

ALTER SYSTEM SET "online_analyze.enable" = on;

-- Применяем изменения

SELECT pg_reload_conf();

💎 Резюме

online_analyze.enable — это инструмент для решения проблем, связанных с устаревшей статистикой в очень динамичных таблицах. Однако его использование должно быть обоснованным. Во многих современных системах, особенно использующих платформу 1С, его включение не только не дает преимуществ, но и может создавать дополнительную нагрузку. Перед включением этого расширения рекомендуется проверить, действительно ли стандартных механизмов автоочистки и сбора статистики недостаточно, и что внешние приложения не выполняют анализ самостоятельно.⚠️

Если у вас есть другие вопросы по PostgreSQL или его расширениям, я готов помочь.