Surveiller les vues matérialisées
Vous pouvez surveiller l'utilisation des vues matérialisées et les jobs d'actualisation en affichant la vue BigQuery INFORMATION_SCHEMA
. Pour créer une liste des vues matérialisées, consultez la section Répertorier les vues matérialisées.
Vue INFORMATION_SCHEMA
de la vue matérialisée
Pour découvrir les vues matérialisées, interrogez la vue INFORMATION_SCHEMA.TABLES
. Pour récupérer les propriétés d'une vue matérialisée, interrogez la vue INFORMATION_SCHEMA.TABLE_OPTIONS
.
Les vues matérialisées ne sont pas listées dans la table des vues INFORMATION_SCHEMA.VIEWS
.
Surveiller l'actualisation automatique
Cette section explique comment afficher les détails d'actualisation des vues matérialisées.
Afficher l'état de la dernière actualisation
Pour récupérer l'état actuel des vues matérialisées, appelez la méthode tables.get
ou interrogez la vue INFORMATION_SCHEMA.MATERIALIZED_VIEWS
.
Exemple :
SELECT table_name, last_refresh_time, refresh_watermark, last_refresh_status FROM `DATASET`.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;
Si la valeur de last_refresh_status
n'est pas NULL
, le dernier job d'actualisation automatique a échoué. Les requêtes d'actualisation manuelle ne sont pas reflétées ici. Les modifications apportées aux tables de base peuvent invalider une définition de vue matérialisée, ce qui entraîne une erreur lors de l'actualisation automatique. Pour en savoir plus, consultez la section Mises à jour incrémentielles. Par exemple, si une colonne référencée par la vue matérialisée est supprimée de la table de base, le champ last_refresh_status
renvoie une erreur invalidQuery
. Pour en savoir plus, consultez la section Messages d'erreur.
Lister les jobs d'actualisation automatique
Pour lister les jobs d'actualisation automatique de la vue matérialisée, appelez la méthode jobs.list
. Pour récupérer les détails concernant les jobs, appelez la méthode jobs.get
. Vous pouvez également interroger les vues INFORMATION_SCHEMA.JOBS_BY_*
pour obtenir les jobs. Les jobs d'actualisation automatique contiennent le préfixe materialized_view_refresh
dans le Job ID et sont démarrés par un compte d'administrateur BigQuery.
Exemple :
SELECT job_id, total_slot_ms, total_bytes_processed, materialized_view_statistics.materialized_view[SAFE_OFFSET(0)].rejected_reason AS full_refresh_reason FROM `region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT` WHERE job_id LIKE '%materialized_view_refresh_%' LIMIT 10;
Pour surveiller le coût des jobs d'actualisation et ajuster l'intervalle d'actualisation automatique si nécessaire, affichez les champs total_bytes_processed
et total_slot_ms
.
Par exemple, si le taux d'ingestion dans les tables de base est relativement faible, il est judicieux d'actualiser la vue moins souvent. Si les données sous-jacentes changent rapidement, il est judicieux de les actualiser plus souvent.
Si les tables de base ingèrent des données à des moments prédéfinis, par exemple par le biais d'un pipeline d'extraction, de transformation et de chargement (ETL) nocturne, envisagez de prendre le contrôle du calendrier de maintenance de la vue matérialisée comme suit :
Effectuez une actualisation manuelle, dans le cadre du pipeline ETL ou en configurant une requête programmée à des heures spécifiques de la journée.
Pour en savoir plus sur les tarifs des vues matérialisées, consultez la section Tarification des vues matérialisées.
Surveiller l'utilisation des vues matérialisées
Pour afficher l'utilisation de la vue matérialisée pour un job de requête, vous pouvez appeler la méthode jobs.get
ou interroger la vue INFORMATION_SCHEMA.JOBS_BY_*
et afficher le champ materialized_view_statistics
. Il fournit des détails concernant l'utilisation des vues matérialisées par la requête, y compris les informations suivantes :
- Si la vue matérialisée a été utilisée.
- Si la vue matérialisée n'a pas été utilisée, et la raison pour laquelle elle a été rejetée.
Exemple :
SELECT job_id, materialized_view_statistics FROM region-US.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE job_id = '<my-query-job-id>';
Pour afficher l'utilisation d'une vue matérialisée au fil du temps, interrogez les vues INFORMATION_SCHEMA.JOBS_BY_*
.
Par exemple, la requête suivante renvoie un résumé des jobs de requête récents qui utilisent la vue matérialisée cible :
SELECT mv.table_reference.dataset_id, mv.table_reference.table_id, MAX(job.creation_time) latest_job_time, COUNT(job_id) job_count FROM region-US.INFORMATION_SCHEMA.JOBS_BY_PROJECT job, UNNEST(materialized_view_statistics.materialized_view) mv WHERE job.creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 7 DAY) AND mv.table_reference.dataset_id = 'my_dataset' AND mv.table_reference.table_id = 'my_materialized_view' AND mv.chosen = TRUE GROUP BY 1, 2;
Résoudre les problèmes des requêtes lentes avec des vues matérialisées
Si votre requête utilise des vues matérialisées et s'exécute plus lentement que prévu, procédez comme suit :
- Vérifiez que les vues matérialisées prévues sont effectivement utilisées par la requête. Pour obtenir des instructions détaillées, consultez Surveiller l'utilisation des vues matérialisées.
- Vérifiez la fraîcheur de votre vue matérialisée.
- Examinez la définition de la vue matérialisée et les données auxquelles elle fait référence, puis appliquez les techniques permettant d'optimiser l'utilisation de vos vues matérialisées.