Перейти к основному содержимому

ANALYZE TABLE

ANALYZE TABLE создает задачу ручного сбора для сбора статистики CBO. По умолчанию ручной сбор является синхронной операцией. Вы также можете настроить его как асинхронную операцию. В асинхронном режиме после выполнения ANALYZE TABLE система немедленно возвращает информацию об успешности выполнения этого оператора. Однако задача сбора будет выполняться в фоновом режиме, и вам не нужно ждать результата. Вы можете проверить статус задачи, выполнив SHOW ANALYZE STATUS. Асинхронный сбор подходит для таблиц с большим объемом данных, тогда как синхронный сбор подходит для таблиц с небольшим объемом данных.

Задачи ручного сбора выполняются только один раз после создания. Вам не нужно удалять задачи ручного сбора.

Этот оператор поддерживается начиная с версии 1.5.0.

Ручной сбор базовой статистики

Для получения дополнительной информации о базовой статистике см. Сбор статистики для CBO.

Синтаксис

ANALYZE [FULL|SAMPLE] TABLE tbl_name (col_name [,col_name])
[WITH SYNC | ASYNC MODE]
PROPERTIES (property [,property])

Описание параметров

  • Тип сбора

    • FULL: указывает на полный сбор.
    • SAMPLE: указывает на выборочный сбор.
    • Если тип сбора не указан, по умолчанию используется полный сбор.
  • col_name: столбцы, из которых собирается статистика. Разделяйте несколько столбцов запятыми (,). Если этот параметр не указан, собирается вся таблица.

  • [WITH SYNC | ASYNC MODE]: выполнять ли задачу ручного сбора в синхронном или асинхронном режиме. По умолчанию используется синхронный сбор, если вы не указываете этот параметр.

  • PROPERTIES: пользовательские параметры. Если PROPERTIES не указаны, используются настройки по умолчанию из файла fe.conf. Фактически используемые свойства можно просмотреть в столбце Properties в выводе SHOW ANALYZE STATUS.

PROPERTIESТипЗначение по умолчаниюОписание
statistic_sample_collect_rowsINT200000Минимальное количество строк для сбора при выборочном сборе. Если значение параметра превышает фактическое количество строк в вашей таблице, выполняется полный сбор.

Примеры

Пример 1: Ручной полный сбор

-- Ручной сбор полной статистики таблицы с использованием настроек по умолчанию.
ANALYZE TABLE tbl_name;

-- Ручной сбор полной статистики таблицы с использованием настроек по умолчанию.
ANALYZE FULL TABLE tbl_name;

-- Ручной сбор статистики указанных столбцов в таблице с использованием настроек по умолчанию.
ANALYZE TABLE tbl_name(c1, c2, c3);

Пример 2: Ручной выборочный сбор

-- Ручной сбор частичной статистики таблицы с использованием настроек по умолчанию.
ANALYZE SAMPLE TABLE tbl_name;

-- Ручной сбор статистики указанных столбцов в таблице с указанием количества строк для сбора.
ANALYZE SAMPLE TABLE tbl_name (v1, v2, v3) PROPERTIES(
"statistic_sample_collect_rows" = "1000000"
);

Ручной сбор гистограмм

Для получения дополнительной информации о гистограммах см. Сбор статистики для CBO.

Синтаксис

ANALYZE TABLE tbl_name UPDATE HISTOGRAM ON col_name [, col_name]
[WITH SYNC | ASYNC MODE]
[WITH N BUCKETS]
PROPERTIES (property [,property]);

Описание параметров

  • col_name: столбцы, из которых собирается статистика. Разделяйте несколько столбцов запятыми (,). Если этот параметр не указан, собирается вся таблица. Этот параметр обязателен для гистограмм.

  • [WITH SYNC | ASYNC MODE]: выполнять ли задачу ручного сбора в синхронном или асинхронном режиме. По умолчанию используется синхронный сбор, если вы не указываете этот параметр.

  • WITH N BUCKETS: N - это количество корзин для сбора гистограммы. Если не указано, используется значение по умолчанию в fe.conf.

  • PROPERTIES: пользовательские параметры. Если PROPERTIES не указаны, используются настройки по умолчанию в fe.conf. Фактически используемые свойства можно просмотреть в столбце Properties в выводе SHOW ANALYZE STATUS.

PROPERTIESТипЗначение по умолчаниюОписание
statistic_sample_collect_rowsINT200000Минимальное количество строк для сбора. Если значение параметра превышает фактическое количество строк в вашей таблице, выполняется полный сбор.
histogram_buckets_sizeLONG64Количество корзин по умолчанию для гистограммы.
histogram_mcv_sizeINT100Количество наиболее часто встречающихся значений (MCV) для гистограммы.
histogram_sample_ratioFLOAT0.1Коэффициент выборки для гистограммы.
histogram_max_sample_row_countLONG10000000Максимальное количество строк для сбора для гистограммы.

Количество строк для сбора для гистограммы контролируется несколькими параметрами. Это большее значение между statistic_sample_collect_rows и количество строк таблицы * histogram_sample_ratio. Количество не может превышать значение, указанное в histogram_max_sample_row_count. Если значение превышено, приоритет имеет histogram_max_sample_row_count.

Примеры

-- Ручной сбор гистограмм по v1 с использованием настроек по умолчанию.
ANALYZE TABLE tbl_name UPDATE HISTOGRAM ON v1;

-- Ручной сбор гистограмм по v1 и v2 с 32 корзинами, 32 MCV и 50% коэффициентом выборки.
ANALYZE TABLE tbl_name UPDATE HISTOGRAM ON v1,v2 WITH 32 BUCKETS
PROPERTIES(
"histogram_mcv_size" = "32",
"histogram_sample_ratio" = "0.5"
);

Ссылки

SHOW ANALYZE STATUS: просмотр статуса задачи ручного сбора.

KILL ANALYZE: отмена выполняющейся задачи ручного сбора.

Для получения дополнительной информации о сборе статистики для CBO см. Сбор статистики для CBO.