ANALYZE TABLE
Область применения: Databricks SQL Databricks Runtime
Инструкция ANALYZE TABLE
собирает статистику по определенной таблице или всем таблицам в указанной схеме. Эти статистические данные используются оптимизатором запросов для создания оптимального плана запроса. Поскольку они могут стать устаревшими в виде изменений данных, эти статистические данные не используются для прямого ответа на запросы. Устаревшие статистические данные по-прежнему полезны для оптимизатора запросов при создании плана запроса.
Синтаксис
ANALYZE TABLE table_name [ PARTITION clause ]
COMPUTE [ DELTA ] STATISTICS [ NOSCAN | FOR COLUMNS col1 [, ...] | FOR ALL COLUMNS ]
ANALYZE TABLES [ { FROM | IN } schema_name ] COMPUTE STATISTICS [ NOSCAN ]
Параметры
-
Определяет таблицу, которую нужно проанализировать. Имя не должно содержать темпоральную спецификацию или путь. Если не удается найти таблицу Azure Databricks, возникает ошибка TABLE_OR_VIEW_NOT_FOUND .
-
Дополнительно ограничивает команду подмножеством секций.
Это предложение не поддерживается для таблиц Delta Lake.
DELTA
Область применения: Databricks Runtime 14.3 LTS и выше
Перекомпьютирует статистику, хранящуюся в журнале Delta для столбцов, настроенных для сбора статистики в таблице Delta.
При указании ключевое слово обычные
DELTA
статистические данные для оптимизатора запросов не собираются.Databricks рекомендует выполняться
ANALYZE TABLE table_name COMPUTE DELTA STATISTICS
после настройки новых столбцов для пропуска данных для обновления статистики для всех строк в таблице. Для оптимизации производительности выполните обновлениеANALYZE TABLE table_name COMPUTE STATISTICS
плана запроса после завершения обновления журнала Delta.[ NOSCAN | FOR COLUMNS col [, …] | FOR ALL COLUMNS ]
Если параметр анализа отсутствует,
ANALYZE TABLE
собирает количество строк в таблице и ее размер в байтах.NOSCAN
Собирает только размер таблицы в байтах (для этого не требуется сканирование всей таблицы).
FOR COLUMNS col [, …] | FOR ALL COLUMNS
Собирает статистику по столбцам для каждого указанного столбца или, кроме того, для каждого столбца, а также статистику по таблице.
Статистика столбцов не поддерживается в сочетании с предложением
PARTITION
.
{ FROM
|
IN } schema_nameУказывает имя анализируемой схемы. Если имя схемы не указано,
ANALYZE TABLES
собирает все таблицы в текущей схеме, которые текущему пользователю разрешено анализировать.
Примеры
> CREATE TABLE students (name STRING, student_id INT) PARTITIONED BY (student_id);
> INSERT INTO students PARTITION (student_id = 111111) VALUES ('Mark');
> INSERT INTO students PARTITION (student_id = 222222) VALUES ('John');
> ANALYZE TABLE students COMPUTE STATISTICS NOSCAN;
> DESC EXTENDED students;
col_name data_type comment
-------------------- -------------------- -------
name string null
student_id int null
... ... ...
Statistics 864 bytes
... ... ...
> ANALYZE TABLE students COMPUTE STATISTICS;
> DESC EXTENDED students;
col_name data_type comment
-------------------- -------------------- -------
name string null
student_id int null
... ... ...
Statistics 864 bytes, 2 rows
... ... ...
-- Note: ANALYZE TABLE .. PARTITION is not supported for Delta tables.
> ANALYZE TABLE students PARTITION (student_id = 111111) COMPUTE STATISTICS;
> DESC EXTENDED students PARTITION (student_id = 111111);
col_name data_type comment
-------------------- -------------------- -------
name string null
student_id int null
... ... ...
Partition Statistics 432 bytes, 1 rows
... ... ...
OutputFormat org.apache.hadoop...
> ANALYZE TABLE students COMPUTE STATISTICS FOR COLUMNS name;
> DESC EXTENDED students name;
info_name info_value
-------------- ----------
col_name name
data_type string
comment NULL
min NULL
max NULL
num_nulls 0
distinct_count 2
avg_col_len 4
max_col_len 4
histogram NULL
> ANALYZE TABLES IN school_schema COMPUTE STATISTICS NOSCAN;
> DESC EXTENDED teachers;
col_name data_type comment
-------------------- -------------------- -------
name string null
teacher_id int null
... ... ...
Statistics 1382 bytes
... ... ...
> DESC EXTENDED students;
col_name data_type comment
-------------------- -------------------- -------
name string null
student_id int null
... ... ...
Statistics 864 bytes
... ... ...
> ANALYZE TABLES COMPUTE STATISTICS;
> DESC EXTENDED teachers;
col_name data_type comment
-------------------- -------------------- -------
name string null
teacher_id int null
... ... ...
Statistics 1382 bytes, 2 rows
... ... ...
> DESC EXTENDED students;
col_name data_type comment
-------------------- -------------------- -------
name string null
student_id int null
... ... ...
Statistics 864 bytes, 2 rows
... ... ...
> ANALYZE TABLE some_delta_table COMPUTE DELTA STATISTICS;