Поделиться через


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 ]

Параметры

  • 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 [, ...] | ДЛЯ ВСЕХ 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;