Sdílet prostřednictvím


ANALYZE TABLE

Platí pro:zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime

Příkaz ANALYZE TABLE shromažďuje odhadované statistiky o konkrétní tabulce nebo všech tabulkách v zadaném schématu. Tyto statistiky používá optimalizátor dotazů k vygenerování optimálního plánu dotazu.

Prediktivní optimalizace se automaticky spouští na spravovaných tabulkách katalogu Unity ANALYZE. Databricks doporučuje povolit prediktivní optimalizaci pro všechny spravované tabulky Katalogu Unity, aby se zjednodušila údržba dat a snížily náklady na úložiště. Viz prediktivní optimalizaci spravovaných tabulek v katalogu Unity.

Syntaxe

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 ]

Parametry

  • table_name

    Identifikuje tabulku, která se má analyzovat. Název nesmí obsahovat dočasnou specifikaci nebo specifikaci možností nebo cestu. Pokud se tabulka nenašla, Azure Databricks vyvolá chybu TABLE_OR_VIEW_NOT_FOUND.

  • PARTITION klauzule

    Volitelně omezí příkaz na podmnožinu oddílů.

    Tato klauzule není pro tabulky Delta Lake podporovaná.

  • DELTA

    Platí pro:zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime 14.3 LTS a vyšší

    Přepočítává statistiky uložené v protokolu Delta pro sloupce nakonfigurované pro sběr statistik v tabulce Delta.

    Při zadání klíčového DELTA slova se neshromažďují běžné statistiky optimalizátoru dotazů.

    Databricks doporučuje spustit ANALYZE TABLE table_name COMPUTE DELTA STATISTICS po nastavení nových sloupců pro přeskočení dat, aby se aktualizovaly statistiky pro všechny řádky v tabulce. Pokud chcete optimalizovat výkon, spusťte ANALYZE TABLE table_name COMPUTE STATISTICS a aktualizujte plán dotazu po dokončení aktualizace protokolu Delta.

  • [ NOSCAN | FOR COLUMNS col [, ...] | PRO VŠECHNY COLUMNS ]

    Pokud není zadána žádná možnost analýzy, ANALYZE TABLE shromažďuje počet řádků a velikost tabulky v bajtech.

    • NOSCAN

      Shromážděte pouze velikost tabulky v bajtech (což nevyžaduje skenování celé tabulky).

    • FOR COLUMNS col [, ...] | PRO VŠECHNY COLUMNS

      Shromážděte statistiky sloupců pro každý zadaný sloupec nebo případně pro každý sloupec a také statistiky tabulky.

      Statistiky sloupců nejsou podporovány v kombinaci s klauzulí PARTITION.

  • { FROM | IN } schema_name

    Určuje název schématu, který se má analyzovat. Bez názvu schématu ANALYZE TABLES shromažďuje všechny tabulky v aktuálním schématu, ke kterému má aktuální uživatel oprávnění k analýze.

Příklady

> 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;