Partager via


ANALYZE TABLE

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

Utilisez l’instruction ANALYZE TABLE pour :

  1. Calcul des métriques de stockage sur une table spécifique ou
  2. Collectez les statistiques estimées sur une table spécifique ou toutes les tables d’un schéma spécifié.

Exécutez COMPUTE STORAGE METRICS sur une table pour renvoyer la taille totale du stockage.

Séparément, les statistiques estimées sont utilisées par l’optimiseur de requête pour générer un plan de requête optimal. L’optimisation prédictive s’exécute ANALYZE automatiquement sur des tables gérées par le catalogue Unity pour collecter ces informations. 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.

Syntaxe

ANALYZE TABLE table_name COMPUTE STORAGE METRICS

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 de spécification temporelle ou de spécification d’options ou de 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 à :case cochée oui Databricks SQL case coché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 le "data skipping", afin de mettre à jour les statistiques de 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 [, ...] | POUR TOUS COLUMNS ]

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

    • NOSCAN

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

    • FOR COLUMNS col [, ...] | POUR TOUS 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.

MÉTRIQUES DE STOCKAGE INFORMATIQUE

S’applique à :check marqué oui Databricks Runtime 18.0 et versions ultérieures

La ANALYZE TABLE … COMPUTE STORAGE METRICS commande calcule le nombre total de métriques de taille de stockage pour une table. Contrairement ANALYZE TABLE … COMPUTE STATISTICS à ce qui optimise les performances des requêtes, cette commande fournit une répartition détaillée du stockage pour l’analyse des coûts et l’optimisation.

Descriptif

Calcule les métriques de taille de stockage totales pour une table spécifique. Cette commande retourne des informations de stockage complètes, notamment le nombre total d’octets, les octets actifs, les octets vides et les octets de déplacement de temps, ainsi que le nombre associé de fichiers pour chaque catégorie.

Utilisez cette commande pour identifier les tables volumineuses ou inutilisées, optimiser les coûts de stockage et comprendre pourquoi la taille totale du stockage diffère de la taille de table active. Cela est particulièrement utile pour les administrateurs de plateforme qui doivent analyser les modèles de stockage sur plusieurs tables ou suivre les modifications de stockage au fil du temps.

Métriques de sortie

La commande retourne les métriques suivantes dans une seule ligne :

Champ Description
total_bytes Taille totale du stockage pour la table. Cela équivaut à la taille du journal des transactions + octets actifs + octets libérables + octets de voyage dans le temps.
num_total_files Nombre total de fichiers, y compris les fichiers journaux delta, les fichiers actifs, les fichiers vides et les fichiers de voyage temporel.
active_bytes Taille des fichiers de données référencés activement par la table (identique à sizeInBytes).
num_active_files Nombre total de fichiers référencés activement par la table.
vacuumable_bytes Taille des données pouvant être supprimées en exécutant VACUUM ou en activant l’optimisation prédictive.
num_vacuumable_files Nombre de fichiers pouvant être compressés.
time_travel_bytes Taille des données historiques utilisées pour les opérations de retour en arrière et de voyage dans le temps. Également appelés octets verrouillés ou octets sécurisés.
num_time_travel_files Nombre de fichiers utilisés pour les déplacements temporels.

Détails

  • La commande utilise une approche de liste récursive pour calculer les informations de stockage. Le temps d’exécution se fait généralement en quelques minutes, mais peut durer jusqu'à plusieurs heures pour les tables très grandes.
  • Cette commande fonctionne à la fois pour les tables managées et externes du catalogue Unity.
  • Les métriques de stockage sont calculées au moment de l’exécution de la commande et ne sont pas stockées dans le catalogue Unity ou retournées par DESCRIBE EXTENDED.
  • Pour suivre les modifications de stockage au fil du temps, exécutez régulièrement cette commande et stockez les résultats dans une table. Exécutez cette commande dans une boucle sur plusieurs tables pour analyser les modèles de stockage dans votre patrimoine de données.

Considérations relatives au type de tableau

  • Vues matérialisées et tables de diffusion en continu :total_bytes inclut la taille de la table et les métadonnées associées. La métrique active_bytes exclut les portions aspirables et sujettes au voyage temporel de la table.
  • Clones peu profonds :total_bytes inclut uniquement les propres métadonnées et fichiers journaux delta du clone, à l’exception des fichiers de table source. active_bytes est égal à zéro, car le clone fait référence aux fichiers de données de la table source.
  • Tables converties : Les tables récemment converties de l’externe en managé peuvent inclure des données à la fois dans des emplacements managés et externes. Par exemple, les données restent à l’emplacement externe pendant la fenêtre de restauration. Consultez Convertir une table externe en table de catalogue Unity managée.

Exemples

Les exemples suivants montrent comment utiliser ANALYZE TABLE pour calculer les métriques de stockage et collecter des statistiques.

Exemples de "COMPUTE STORAGE METRICS"

> ANALYZE TABLE main.my_schema.my_table COMPUTE STORAGE METRICS;
total_bytes  total_num_files  active_bytes  num_active_files  vacuumable_bytes  num_vacuumable_files  time_travel_bytes  num_time_travel_files
-----------  ---------------  ------------  ----------------  ----------------  --------------------  -----------------  ---------------------
 5368709120             1250    4294967296              1000        805306368                   150         268435456                    100

La sortie indique :

  • Stockage total : 5,37 Go sur 1 250 fichiers
  • Données actives : 4,29 Go dans 1 000 fichiers (version actuelle de la table)
  • Données vides : 805 Mo dans 150 fichiers (peuvent être récupérés avec VACUUM)
  • Données de voyage dans le temps : 268 Mo dans 100 fichiers (pour les requêtes historiques)

Exemples de COMPUTE STATISTICS

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