Freigeben über


ANALYZE TABLE

Gilt für: durch Häkchen mit „Ja“ markiert Databricks SQL Häkchen gesetzt ja Databricks Runtime

Die ANALYZE TABLE-Anweisung sammelt geschätzte Statistiken zu einer bestimmten Tabelle oder allen Tabellen in einem angegebenen Schema. Diese Statistiken werden vom Abfrageoptimierer für das Generieren eines optimalen Abfrageplans verwendet.

Die Predictive Optimization führt automatisch verwaltete Tabellen im UNITY-Katalog aus ANALYZE . Databricks empfiehlt die Aktivierung der prädiktiven Optimierung für alle verwalteten Tabellen in Unity Catalog, um die Datenwartung zu vereinfachen und die Speicherkosten zu senken. Siehe Prädiktive Optimierung für verwaltete Unity Catalog-Tabellen.

Wichtig

Predictive optimization with ANALYZE is in Public Preview. Sie enthält eine intelligente Statistiksammlung während der Schreibvorgänge. Verwenden Sie dieses Formular , um sich für die öffentliche Vorschau anzumelden.

Syntax

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 ]

Parameter

  • table_name

    Gibt die zu analysierende Tabelle an. Der Name darf keine temporale Spezifikation oder einen Pfad enthalten. Wenn die Tabelle nicht gefunden werden kann, löst Azure Databricks den Fehler TABLE_OR_VIEW_NOT_FOUND aus.

  • PARTITION-Klausel

    Schränkt den Befehl ggf. auf eine Teilmenge der Partitionen ein.

    Diese Klausel wird für Delta Lake-Tabellen nicht unterstützt.

  • DELTA

    Gilt für: Häkchen ja Databricks SQL Häkchen gesetzt ja Databricks Runtime 14.3 LTS und höher

    Berechnet im Delta-Protokoll gespeicherte Statistiken für die Spalten neu, die für die Statistiksammlung in einer Delta-Tabelle konfiguriert wurden.

    Wenn das Schlüsselwort DELTA angegeben wird, werden keine normalen Statistiken für den Abfrageoptimierer erfasst.

    Databricks empfiehlt die Ausführung von ANALYZE TABLE table_name COMPUTE DELTA STATISTICS, nachdem neue Spalten zum Überspringen von Daten festgelegt wurden, um Statistiken für alle Zeilen in einer Tabelle zu aktualisieren. Führen Sie für eine optimierte Leistung ANALYZE TABLE table_name COMPUTE STATISTICS aus, um den Abfrageplan nach Abschluss der Delta-Protokollaktualisierung zu aktualisieren.

  • [ NOSCAN | FOR COLUMNS col [, …] | FOR ALL COLUMNS ]

    Wenn keine Analyseoption angegeben ist, erfasst ANALYZE TABLE die Anzahl der Zeilen und Größe der Tabelle in Bytes.

    • NOSCAN

      Erfasst nur die Größe der Tabelle in Bytes (sodass keine Überprüfung der gesamten Tabelle erforderlich ist).

    • FOR COLUMNS col [, …] | FOR ALL COLUMNS

      Erfasst Spaltenstatistiken für alle angegebenen Spalten oder alternativ für alle Spalten sowie Tabellenstatistiken.

      Spaltenstatistiken werden in Kombination mit der PARTITION-Klausel nicht unterstützt.

  • { FROM | IN } schema_name

    Gibt den Namen des zu analysierenden Schemas an. Ohne Schemanamen erfasst ANALYZE TABLES alle Tabellen im aktuellen Schema, für das der aktuelle Benutzer über die Berechtigung zum Analysieren verfügt.

Beispiele

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