ANALYZE TABLE

Область применения: флажок Databricks SQL флажок Databricks Runtime

Инструкция ANALYZE TABLE собирает оценочную статистику по определенной таблице или всем таблицам в указанной схеме. Эти статистические данные используются оптимизатором запросов для создания оптимального плана запроса.

Прогнозная оптимизация автоматически запускает ANALYZE управляемые таблицы каталога ON Unity. Databricks рекомендует включить прогнозную оптимизацию для всех управляемых таблиц каталога Unity, чтобы упростить обслуживание данных и сократить затраты на хранение. См . статью прогнозной оптимизации для управляемых таблиц каталога Unity.

Внимание

Прогнозная оптимизация с ANALYZE общедоступной предварительной версией. Она включает интеллектуальную коллекцию статистики во время записи. Используйте эту форму для регистрации в общедоступной предварительной версии.

Синтаксис

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 ]

Параметры

  • table_name

    Определяет таблицу, которую нужно проанализировать. Имя не должно содержать темпоральную спецификацию или путь. Если не удается найти таблицу 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 [, …] | 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;