Partager via


ANALYZE TABLE

S’applique à : case marquée oui Databricks SQL coche marquée oui Databricks Runtime

L’instruction ANALYZE TABLE collecte des statistiques estimées sur une table spécifique ou toutes les tables d’un schéma donné. Ces statistiques sont utilisées par l’optimiseur de requêtes pour générer un plan de requête optimal.

L’optimisation prédictive exécute automatiquement les ANALYZE tables gérées par le catalogue ON Unity. Databricks recommande d’activer l’optimisation prédictive pour toutes les tables managées par Unity Catalog afin de simplifier la maintenance des données et de réduire les coûts de stockage. Consultez Optimisation prédictive pour les tables managées Unity Catalog.

Important

L’optimisation prédictive avec ANALYZE est en préversion publique. Il inclut la collecte intelligente des statistiques pendant les écritures. Utilisez ce formulaire pour vous inscrire à la préversion publique.

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 ]

Paramètres

  • table_name

    Identifie la table à analyser. Le nom ne doit pas inclure une spécification temporelle ou un chemin d’accès. Si la table est introuvable, Azure Databricks génère une erreur TABLE_OR_VIEW_NOT_FOUND.

  • Clause PARTITION

    Limite éventuellement la commande à un sous-ensemble de partitions.

    Cette clause est uniquement prise en charge pour les tables Delta Lake.

  • DELTA

    S’applique à : coche marquée oui Databricks SQL case marquée oui Databricks Runtime 14.3 LTS et versions ultérieures

    Recalcule les statistiques stockées dans le journal Delta pour les colonnes configurées pour la collecte de statistiques dans une table Delta.

    Lorsque le mot clé DELTA est spécifié, les statistiques normales pour l’optimiseur de requête ne sont pas collectées.

    Databricks recommande d’exécuter ANALYZE TABLE table_name COMPUTE DELTA STATISTICS après avoir défini de nouvelles colonnes pour ignorer les données, afin de mettre à jour les statistiques pour toutes les lignes d’une table. Pour optimiser les performances, exécutez ANALYZE TABLE table_name COMPUTE STATISTICS afin de mettre à jour le plan de requête une fois la mise à jour du journal Delta terminée.

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

    Si aucune option d’analyse n’est spécifiée, ANALYZE TABLE collecte le nombre de lignes et la taille de la table en octets.

    • NOSCAN

      Collecte uniquement la taille de la table en octets (ce qui ne nécessite pas l’analyse de la table entière).

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

      Collectez les statistiques de colonne pour chaque colonne spécifiée, ou une autre pour chaque colonne, ainsi que les statistiques de table.

      Les statistiques de colonne ne sont pas prises en charge en combinaison avec la clause PARTITION.

  • { FROM | IN } schema_name

    Spécifie le nom du schéma à analyser. Sans nom de schéma, ANALYZE TABLES collecte toutes les tables du schéma actuel que l’utilisateur actuel est autorisé à analyser.

Exemples

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