ANALYZE TABLE
Область применения: Databricks SQL
Databricks Runtime
Инструкция ANALYZE TABLE
собирает оценочную статистику о конкретной таблице или всех таблицах в указанной схеме. Эти статистические данные используются оптимизатором запросов для создания оптимального плана запроса.
Прогнозная оптимизация автоматически выполняется на таблицах, управляемых в каталоге Unity, в состоянии "ANALYZE
". Databricks рекомендует включить прогнозную оптимизацию для всех управляемых таблиц каталога Unity, чтобы упростить обслуживание данных и сократить затраты на хранение. См. оптимизацию прогнозирования для таблиц, управляемых Unity Catalog.
Синтаксис
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.
предложение PARTITION
Дополнительно ограничивает команду подмножеством секций.
Это предложение не поддерживается для таблиц Delta Lake.
DELTA
Область применения:
Databricks SQL
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 [, ...] | ДЛЯ ВСЕХ COLUMNS ]
Если параметр анализа не указан,
ANALYZE TABLE
собирает количество строк и размер таблицы в байтах.NOSCAN
Соберите только размер таблицы в байтах (не требует проверки всей таблицы).
FOR COLUMNS col [, ...] ДЛЯ ВСЕХ 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;