Udostępnij za pośrednictwem


ANALYZE TABLE

Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime

Instrukcja ANALYZE TABLE zbiera statystyki dotyczące określonej tabeli lub wszystkich tabel w określonym schemacie. Te statystyki są używane przez optymalizator zapytań do generowania optymalnego planu zapytania. Ponieważ mogą one stać się nieaktualne w miarę zmian danych, te statystyki nie są używane do bezpośredniego odpowiadania na zapytania. Nieaktualne statystyki są nadal przydatne dla optymalizatora zapytań podczas tworzenia planu zapytania.

Składnia

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

    Identyfikuje tabelę do przeanalizowania. Nazwa nie może zawierać specyfikacji czasowej ani ścieżki . Jeśli nie można odnaleźć tabeli usługi Azure Databricks, wystąpi błąd TABLE_OR_VIEW_NOT_FOUND .

  • KLAUZULA PARTITION

    Opcjonalnie ogranicza polecenie do podzbioru partycji.

    Ta klauzula nie jest obsługiwana w przypadku tabel usługi Delta Lake.

  • DELTA

    Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 14.3 LTS i nowsze

    Ponownie skompiluj statystyki przechowywane w dzienniku delty dla kolumn skonfigurowanych dla zbierania statystyk w tabeli delty.

    Po określeniu DELTA słowa kluczowego nie są zbierane normalne statystyki optymalizatora zapytań.

    Usługa Databricks zaleca uruchamianie ANALYZE TABLE table_name COMPUTE DELTA STATISTICS po ustawieniu nowych kolumn dla danych pomijających aktualizowanie statystyk dla wszystkich wierszy w tabeli. Aby zoptymalizować wydajność, uruchom polecenie ANALYZE TABLE table_name COMPUTE STATISTICS , aby zaktualizować plan zapytania po zakończeniu aktualizacji dziennika delty.

  • [ NOSCAN | KOLUMNA KOLUMN [, ...] | DLA WSZYSTKICH KOLUMN ]

    Jeśli nie określono opcji analizy, ANALYZE TABLE zbiera liczbę wierszy i rozmiar tabeli w bajtach.

    • NOSCAN

      Zbierz tylko rozmiar tabeli w bajtach ( który nie wymaga skanowania całej tabeli ).

    • KOLUMNA KOLUMN [, ...] | DLA WSZYSTKICH KOLUMN

      Zbierz statystyki kolumn dla każdej określonej kolumny lub alternatywnie dla każdej kolumny, a także statystyki tabeli.

      Statystyki kolumn nie są obsługiwane w połączeniu z klauzulą PARTITION .

  • { FROM | IN } schema_name

    Określa nazwę schematu do przeanalizowania. Bez nazwy schematu zbiera wszystkie tabele w bieżącym schemacie, ANALYZE TABLES do którego bieżący użytkownik ma uprawnienia do analizowania.

Przykłady

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