F.30. online_analyze

Модуль online_analyze предоставляет набор функций, которые немедленно обновляют статистику после операций INSERT, UPDATE, DELETE, SELECT INTO или COPY в целевых таблицах.

Примечание

Не рекомендуется использовать этот модуль с современными версиями 1C.

Однако online_analyze можно включить, если фоновые изменения не обеспечивают ожидаемые результаты или оптимизатор часто ошибается в оценке количества строк.

Следующая инструкция полезна, только если вы решите использовать этот модуль.

F.30.1. Загрузка модуля

Чтобы использовать модуль online_analyze, загрузите разделяемую библиотеку:

LOAD 'online_analyze';

F.30.2. Настройка модуля

Вы можете настроить online_analyze, используя следующие дополнительные переменные (для них показаны значения по умолчанию):

  • online_analyze.enable = on

    Включает online_analyze.

  • online_analyze.verbose = on

    Выполняет ANALYZE VERBOSE.

    Примечание

    Так как verbose является зарезервированным ключевым словом языка SQL, в SQL-запросах данный параметр нужно заключать в кавычки. Например:

    ALTER SYSTEM SET "online_analyze.verbose" = 'off';
  • online_analyze.scale_factor = 0.1

    Процент от размера таблицы, при котором начинается немедленный анализ (этот параметр подобен autovacuum_analyze_scale_factor).

  • online_analyze.threshold = 50

    Минимальное число изменений строк, после которого может начаться немедленный анализ (этот параметр подобен autovacuum_analyze_threshold).

  • online_analyze.min_interval = 10000

    Минимальный интервал времени между вызовами ANALYZE для отдельной таблицы (в миллисекундах).

  • online_analyze.table_type = "all"

    Типы таблиц, для которых выполняется немедленный анализ: all (все), persistent (постоянные), temporary (временные), none (никакие).

  • online_analyze.exclude_tables = ""

    Список таблиц, исключаемых из немедленного анализа.

  • online_analyze.include_tables = ""

    Список таблиц, подвергаемых немедленному анализу (параметр online_analyze.include_tables переопределяет online_analyze.exclude_tables).

  • online_analyze.local_tracking = off

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

  • online_analyze.lower_limit = 0

    Минимальное число строк в таблиц, при котором будет срабатывать online_analyze.

  • online_analyze.capacity_threshold = 100000

    Максимальное число временных таблиц, сохраняемых в локальном кеше.

F.30.3. Авторы

      Фёдор Сигаев 
    

F.30. online_analyze

The online_analyze module provides a set of features that immediately update statistics after INSERT, UPDATE, DELETE, SELECT INTO, or COPY operations for the affected tables.

Note

It is not recommended to use this module with modern versions of 1C.

However, you can enable online_analyze if background updates do not provide the desired result or if the optimizer frequently fails to estimate the row count.

The instruction below is relevant only if you decide to use the module.

F.30.1. Module Loading

To use online_analyze module, load the shared library:

LOAD 'online_analyze';

F.30.2. Module Configuration

You can configure online_analyze using the following custom variables (default values are shown):

  • online_analyze.enable = on

    Enables online_analyze.

  • online_analyze.verbose = on

    Executes ANALYZE VERBOSE.

    Note

    Since verbose is a reserved SQL key word, this parameter has to be double-quoted when used in SQL queries. For example:

    ALTER SYSTEM SET "online_analyze.verbose" = 'off';

  • online_analyze.scale_factor = 0.1

    Fraction of table size to start online analysis (similar to autovacuum_analyze_scale_factor).

  • online_analyze.threshold = 50

    Minimum number of row updates before starting online analysis (similar to autovacuum_analyze_threshold).

  • online_analyze.min_interval = 10000

    Minimum time interval between ANALYZE calls per table, in milliseconds.

  • online_analyze.table_type = "all"

    Type(s) of tables for online analysis. Possible values are: all, persistent, temporary, none.

  • online_analyze.exclude_tables = ""

    List of tables to exclude from online analysis.

  • online_analyze.include_tables = ""

    List of tables to include in online analysis (online_analyze.include_tables overrides online_analyze.exclude_tables).

  • online_analyze.local_tracking = off

    Enables per-backend tracking for temporary tables by online_analyze. When this variable is set to off, online_analyze uses the default system statistics for temporary tables.

  • online_analyze.lower_limit = 0

    Minimum number of rows in a table required to trigger online_analyze.

  • online_analyze.capacity_threshold = 100000

    Maximum number of temporary tables to store in local cache.

F.30.3. Authors


      Teodor Sigaev 
    

FAQ