Delen via


ANALYZE TABLE

Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime

De ANALYZE TABLE-statement verzamelt geschatte statistieken over een specifieke tabel of alle tabellen in een opgegeven schema. Deze statistieken worden gebruikt door de queryoptimalisatie om een optimaal queryplan te genereren.

Voorspellende optimalisatie wordt automatisch uitgevoerd ANALYZE beheerde tabellen in Unity Catalog. Databricks raadt aan voorspellende optimalisatie in te schakelen voor alle beheerde tabellen in Unity Catalog om het onderhoud van gegevens te vereenvoudigen en de opslagkosten te verlagen. Zie Voorspellende optimalisatie voor beheerde tabellen van Unity Catalog.

Syntaxis

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 ]

Parameters

  • table_name

    Identificeert de tabel die moet worden geanalyseerd. De naam mag geen tijdelijke specificatie of optiesspecificatie of pad bevatten. Als de tabel niet kan worden gevonden, genereert Azure Databricks een TABLE_OR_VIEW_NOT_FOUND-fout.

  • PARTITION clausule

    De opdracht kan eventueel worden beperkt tot een subset van partities.

    Deze component wordt niet ondersteund voor Delta Lake-tabellen.

  • DELTA

    Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 14.3 LTS en hoger

    Hiermee worden statistieken die zijn opgeslagen in het Delta-logboek opnieuw berekend voor de kolommen die zijn geconfigureerd voor het verzamelen van statistieken in een Delta-tabel.

    Wanneer het DELTA trefwoord is opgegeven, worden normale statistieken voor de queryoptimalisatie niet verzameld.

    Databricks raadt aan om ANALYZE TABLE table_name COMPUTE DELTA STATISTICS uit te voeren nadat u nieuwe kolommen hebt ingesteld voor het overslaan van gegevens om statistieken voor alle rijen in een tabel bij te werken. Voor geoptimaliseerde prestaties voert u ANALYZE TABLE table_name COMPUTE STATISTICS uit om het queryplan bij te werken nadat de deltalogboekupdate is voltooid.

  • [ NOSCAN | VOOR COLUMNS kolom [, ...] | VOOR ALLE COLUMNS ]

    Als er geen analyseoptie is opgegeven, verzamelt ANALYZE TABLE het aantal rijen en grootte van de tabel in bytes.

    • NOSCAN

      Verzamel alleen de grootte van de tabel in bytes (waarvoor de hele tabel niet hoeft te worden gescand).

    • VOOR COLUMNS kolom [, ...] | VOOR ALLE COLUMNS

      Verzamel kolomstatistieken voor elke opgegeven kolom of voor elke kolom, evenals tabelstatistieken.

      Kolomstatistieken worden niet ondersteund in combinatie met de PARTITION component.

  • { FROM | IN } schema_name

    Hiermee geeft u de naam van het schema dat moet worden geanalyseerd. Zonder een schemanaam verzamelt ANALYZE TABLES alle tabellen in het huidige schema die de huidige gebruiker heeft gemachtigd om te analyseren.

Voorbeelden

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