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_rows | INT | 200000 | Минимальное количество строк для сбора при выборочном сборе. Если значение параметра превышает фактическое количество строк в вашей таблице, выполняется полный сбор. |
Примеры
Пример 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_rows | INT | 200000 | Минимальное количество строк для сбора. Если значение параметра превышает фактическое количество строк в вашей таблице, выполняется полный сбор. |
| histogram_buckets_size | LONG | 64 | Количество корзин по умолчанию для гистограммы. |
| histogram_mcv_size | INT | 100 | Количество наиболее часто встречающихся значений (MCV) для гистограммы. |
| histogram_sample_ratio | FLOAT | 0.1 | Коэффициент выборки для гистограммы. |
| histogram_max_sample_row_count | LONG | 10000000 | Максимальное количество строк для сбора для гистограммы. |
Количество строк для сбора для гистограммы контролируется несколькими параметрами. Это большее значение между 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.