Перейти к основному содержимому
Версия: 2.0.x

ANALYZE TABLE

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

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

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

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

Подробнее о базовой статистике см. Сбор статистики для 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.