Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :
Databricks SQL
Databricks Runtime
Utilisez l’instruction ANALYZE TABLE pour :
- Calcul des métriques de stockage sur une table spécifique ou
- 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
-
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.
DELTAS’applique à :
Databricks SQL
Databricks Runtime 14.3 LTS et versions ultérieuresRecalcule 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é
DELTAest 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 STATISTICSaprè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écutezANALYZE TABLE table_name COMPUTE STATISTICSafin 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 TABLEcollecte 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_nameSpécifie le nom du schéma à analyser. Sans nom de schéma,
ANALYZE TABLEScollecte toutes les tables du schéma actuel que l’utilisateur actuel est autorisé à analyser.
MÉTRIQUES DE STOCKAGE INFORMATIQUE
S’applique à :
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_bytesinclut la taille de la table et les métadonnées associées. La métriqueactive_bytesexclut les portions aspirables et sujettes au voyage temporel de la table. -
Clones peu profonds :
total_bytesinclut uniquement les propres métadonnées et fichiers journaux delta du clone, à l’exception des fichiers de table source.active_bytesest é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;