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

CREATE ANALYZE

CREATE ANALYZE настраивает автоматическую задачу сбора для сбора статистики CBO.

По умолчанию Selena автоматически собирает полную статистику таблицы. Она проверяет наличие обновлений данных каждые 5 минут. Если обнаружено изменение данных, автоматически запускается сбор данных. Если вы не хотите использовать автоматический полный сбор, вы можете установить параметр конфигурации FE enable_collect_full_statistic в false и настроить задачу сбора.

Различие в поведении:

  • До версий 3.2.12 и 3.3.4 для создания пользовательской автоматической задачи сбора необходимо было отключить автоматический полный сбор (enable_collect_full_statistic = false). В противном случае пользовательские задачи не могли вступить в силу.
  • Начиная с этих версий, вы можете создавать задачи анализа и сохранять системные задачи. Пользовательские задачи будут перезаписывать системные задачи при наличии конфликтов.

Данная инструкция поддерживается начиная с версии 1.5.0.

Синтаксис

-- Автоматически собирать статистику всех баз данных.
CREATE ANALYZE [FULL|SAMPLE] ALL PROPERTIES (property [,property])

-- Автоматически собирать статистику всех таблиц в базе данных.
CREATE ANALYZE [FULL|SAMPLE] DATABASE db_name
PROPERTIES (property [,property])

-- Автоматически собирать статистику указанных столбцов в таблице.
CREATE ANALYZE [FULL|SAMPLE] TABLE tbl_name (col_name [,col_name])
PROPERTIES (property [,property])

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

  • Тип сбора

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

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

PROPERTIESТипЗначение по умолчаниюОписание
statistic_auto_collect_ratioFLOAT0.8Пороговое значение для определения того, является ли статистика для автоматического сбора здоровой. Если состояние статистики ниже этого порога, запускается автоматический сбор.
statistics_max_full_collect_data_sizeINT100Размер самого большого раздела для автоматического сбора данных. Единица: ГБ. Если раздел превышает это значение, полный сбор отменяется и вместо него выполняется выборочный сбор.
statistic_sample_collect_rowsINT200000Минимальное количество строк для сбора. Если значение параметра превышает фактическое количество строк в вашей таблице, выполняется полный сбор.

Примеры

Пример 1: Автоматический полный сбор

-- Автоматически собирать полную статистику всех баз данных.
CREATE ANALYZE ALL;

-- Автоматически собирать полную статистику базы данных.
CREATE ANALYZE DATABASE db_name;

-- Автоматически собирать полную статистику всех таблиц в базе данных.
CREATE ANALYZE FULL DATABASE db_name;

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

Пример 2: Автоматический выборочный сбор

-- Автоматически собирать статистику всех таблиц в базе данных, используя настройки по умолчанию.
CREATE ANALYZE SAMPLE DATABASE db_name;

-- Автоматически собирать статистику указанных столбцов в таблице с указанием состояния статистики и количества строк для сбора.
CREATE ANALYZE SAMPLE TABLE tbl_name(c1, c2, c3) PROPERTIES(
"statistic_auto_collect_ratio" = "0.5",
"statistic_sample_collect_rows" = "1000000"
);

Ссылки

SHOW ANALYZE JOB: просмотр статуса пользовательской задачи сбора.

DROP ANALYZE: удаление пользовательской задачи сбора.

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

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