Utiliser l'exécution avancée BigQuery
Ce document explique comment activer et désactiver le moteur d'exécution avancé BigQuery, et comment évaluer ses effets sur les performances de vos requêtes.
Rôles et autorisations
Pour obtenir les autorisations nécessaires pour spécifier un paramètre de configuration, demandez à votre administrateur de vous accorder le rôle IAM Administrateur BigQuery (roles/bigquery.admin
) sur votre projet ou votre organisation.
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Fonctionnalités
L'activation de l'exécution avancée sur un projet BigQuery active des fonctionnalités dans le processeur de requêtes qui réduisent la latence des requêtes et la consommation d'emplacements sans frais supplémentaires.
Vectorisation améliorée
L'exécution vectorisée est un modèle de traitement des requêtes qui fonctionne sur des colonnes de données dans des blocs alignés sur la taille du cache du processeur et qui utilise des instructions SIMD (Single Instruction, Multiple Data). La vectorisation améliorée étend l'exécution des requêtes vectorisées dans BigQuery aux aspects suivants du traitement des requêtes :
- En exploitant des encodages de données spécialisés dans le format de stockage Capacitor, les opérations d'évaluation des filtres peuvent être exécutées sur les données encodées.
- Les encodages spécialisés sont propagés dans le plan de requête, ce qui permet de traiter davantage de données lorsqu'elles sont encore encodées.
- En implémentant le pliage d'expressions pour évaluer les fonctions déterministes et les expressions constantes, BigQuery peut simplifier les prédicats complexes en valeurs constantes.
Optimisations pour les requêtes courtes
BigQuery exécute généralement les requêtes dans un environnement distribué à l'aide d'une couche intermédiaire de redistribution. Les optimisations pour les requêtes courtes identifient de manière dynamique les requêtes qui peuvent être exécutées en une seule étape, ce qui réduit la latence et la consommation d'emplacements. Les encodages spécialisés peuvent être utilisés plus efficacement lorsqu'une requête est exécutée en une seule étape. Ces optimisations sont plus efficaces lorsqu'elles sont utilisées avec le mode de création de job facultatif, qui minimise la latence de démarrage, de maintenance et de récupération des résultats des jobs.
L'éligibilité à l'optimisation des requêtes courtes est dynamique et dépend des facteurs suivants :
- Taille prévue de l'analyse des données.
- La quantité de données à transférer.
- Sélectivité des filtres de requête.
- Type et disposition physique des données stockées.
- Structure globale de la requête.
- Les statistiques historiques des exécutions de requêtes passées.
Activer l'environnement d'exécution avancé
Pour activer le runtime avancé pour votre projet ou votre organisation, utilisez l'instruction ALTER PROJECT
ou ALTER ORGANIZATION
afin de modifier la configuration par défaut. Dans l'instruction, définissez l'argument query_runtime
sur 'advanced'
. Exemple :
ALTER PROJECTPROJECT_NAME
SET OPTIONS ( `region-LOCATION
.query_runtime` = 'advanced' );
Remplacez les éléments suivants :
PROJECT_NAME
: nom du projet.LOCATION
: emplacement du projet.
La prise en compte de la modification peut prendre plusieurs minutes.
Une fois que vous avez activé le moteur d'exécution avancé, les requêtes éligibles du projet ou de l'organisation utilisent le moteur d'exécution avancé, quel que soit l'utilisateur qui a créé le job de requête.
Désactiver l'environnement d'exécution avancé
Pour désactiver le runtime avancé pour votre projet ou votre organisation, utilisez l'instruction ALTER PROJECT
ou ALTER ORGANIZATION
afin de modifier la configuration par défaut. Dans l'instruction, définissez l'argument query_runtime
sur NULL
. Exemple :
ALTER PROJECTPROJECT_NAME
SET OPTIONS ( `region-LOCATION
.query_runtime` = NULL );
Remplacez les éléments suivants :
PROJECT_NAME
: nom du projet.LOCATION
: emplacement du projet.
La prise en compte de la modification peut prendre plusieurs minutes.
Évaluer les performances des requêtes
Vous pouvez utiliser l'explorateur de jobs administratifs et les vues INFORMATION_SCHEMA
pour évaluer l'effet du runtime avancé sur le temps d'exécution des requêtes et l'utilisation des emplacements.
Pour évaluer les performances des requêtes avec et sans l'exécution avancée activée, procédez comme suit :
Dans la console Trusted Cloud , accédez à la page BigQuery.
Ouvrez un nouvel onglet dans l'éditeur de requête.
Désactivez l'utilisation des résultats de requête mis en cache pour cet onglet de requête.
Saisissez ou copiez vos requêtes de test dans l'onglet "Requête".
Exécutez vos requêtes de test plusieurs fois pour établir des performances de référence. Après chaque exécution, déterminez les métriques de performances des requêtes comme suit :
- Affichez les détails de l'exécution de la requête dans l'explorateur de jobs d'administration.
Récupérez les données sur les performances des jobs à partir de la vue
INFORMATION_SCHEMA.JOBS_BY_USER
en exécutant la requête suivante dans un nouvel onglet de requête :SELECT job_id, end_time - start_time AS duration, total_slot_ms, query FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_USER WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY) AND job_type='QUERY' AND total_slot_ms IS NOT NULL ORDER BY creation_time DESC, query ASC LIMIT 1000;
Répétez l'étape 5.
Comparez les métriques de latence des requêtes et d'utilisation des emplacements pour les requêtes de test avant et après l'activation du moteur d'exécution avancé.