Comprendre les emplacements
Un emplacement BigQuery est une unité de calcul virtuelle utilisée par BigQuery pour exécuter des requêtes SQL, du code Python ou d'autres types de jobs. Lors de l'exécution d'une requête, BigQuery détermine automatiquement le nombre d'emplacements utilisés par la requête. Le nombre d'emplacements utilisés dépend de la quantité de données traitées, de la complexité de la requête et du nombre d'emplacements disponibles. En général, l'accès à davantage d'emplacements vous permet d'exécuter plus de requêtes simultanées, et vos requêtes complexes peuvent s'exécuter plus rapidement. Vous ne pouvez pas modifier manuellement le nombre d'emplacements utilisés par BigQuery pour exécuter des requêtes.
Tarification à la demande et basée sur la capacité
Bien que toutes les requêtes utilisent des emplacements, vous avez le choix entre deux options de facturation : le modèle de tarification à la demande ou le modèle de tarification basé sur la capacité.
Par défaut, vous êtes facturé selon le modèle à la demande. Avec ce modèle, vous êtes facturé en fonction de la quantité de données traitées (mesurée en Tio) par chaque requête. Les projets utilisant le modèle à la demande sont soumis à une limite maximale d'emplacements simultanés pour la tarification à la demande avec une capacité d'utilisation intensive temporaire. La plupart des utilisateurs du modèle à la demande trouvent cette limite de capacité d'emplacements plus que suffisante. Toutefois, en fonction de votre charge de travail, l'accès à un plus grand nombre d'emplacements peut améliorer les performances des requêtes. Pour vérifier l'utilisation des emplacements de votre compte, consultez Surveiller l'état, l'utilisation des ressources et les jobs.
Avec le modèle basé sur la capacité, vous payez la capacité d'emplacements allouée à vos requêtes au fil du temps. Ce modèle vous confère un contrôle explicite sur la capacité totale des emplacements. Vous choisissez explicitement le nombre d'emplacements à utiliser via une réservation. Vous pouvez spécifier le nombre d'emplacements dans une réservation sous la forme d'un montant de référence qui est toujours alloué, ou sous la forme d'un montant avec autoscaling, qui est alloué en cas de besoin. Les réservations avec des emplacements d'autoscaling adaptent leur capacité en fonction de vos demandes de charge de travail. BigQuery alloue des emplacements en fonction de l'évolution des charges de travail. Cela vous permet de configurer le nombre d'emplacements dans une réservation en fonction des performances ou de la nature critique de la charge de travail qui utilise la réservation.
Éviter les coûts à la demande inattendus
Pour éviter que les projets non attribués ou nouvellement créés ne soient soumis par défaut à la tarification à la demande, gérez vos réservations BigQuery à l'aide de la hiérarchie des ressourcesGoogle Cloud en suivant les pratiques suivantes :
- Attribuer au niveau du dossier ou de l'organisation : au lieu d'une configuration projet par projet, créez une attribution de réservation au niveau du dossier ou de l'organisation. Cela garantit que tous les projets existants et futurs de cette hiérarchie héritent automatiquement de la réservation et utilisent sa capacité d'emplacements.
- Tenez compte du comportement par défaut : sans attribution explicite ni héritée, BigQuery applique automatiquement le modèle de tarification à la demande.
- Remplacement pour les exceptions : si des projets spécifiques doivent utiliser la tarification à la demande, vous pouvez remplacer l'attribution héritée en attribuant explicitement ces projets à la réservation Aucune.
Pour en savoir plus sur la priorité d'attribution, consultez Attributions de réservation.
Exécuter des requêtes à l'aide d'emplacements
Lorsque BigQuery exécute un job de requête, il convertit l'instruction SQL en un plan d'exécution composé d'une série de phases de requête. Les étapes sont elles-mêmes composées d'ensembles d'étapes d'exécution. BigQuery utilise une architecture parallèle distribuée pour exécuter les requêtes. Les étapes modélisent les unités de travail qui peuvent être exécutées en parallèle. Les données sont transmises entre les étapes à l'aide d'une architecture de brassage distribuée, qui est présentée en détail dans cet article de blogGoogle Cloud .
L'exécution d'une requête BigQuery est dynamique. Un plan de requête peut être modifié pendant le traitement de la requête. La distribution du travail peut être optimisée pour la distribution des données à mesure que des étapes sont ajoutées. De plus, la capacité d'exécution d'une requête peut changer à mesure que d'autres requêtes démarrent ou se terminent, ou que l'autoscaler ajoute des emplacements à une réservation.
BigQuery peut exécuter plusieurs phases simultanément, exploiter l'exécution spéculative pour accélérer une requête et repartitionner dynamiquement une phase pour obtenir une parallélisation optimale.
Économie des ressources d'emplacements
Si une requête demande plus d'emplacements que ce qui est disponible, BigQuery place en file d'attente des unités de travail individuelles et attend que des emplacements soient disponibles. Au fur et à mesure de l'exécution de la requête et de la libération des emplacements, ces unités de travail mises en file d'attente sont sélectionnées de manière dynamique.
BigQuery peut demander autant d'emplacements qu'il le souhaite pour une phase donnée d'une requête. Le nombre d'emplacements demandés n'est pas lié au volume de capacité achetée, mais indique plutôt le facteur de parallélisation optimal choisi par BigQuery pour cette phase. Les unités de travail sont placées en file d'attente et sont exécutées dès que des emplacements sont disponibles.
Lorsque vos besoins en requêtes dépassent le nombre d'emplacements disponibles, aucun emplacement supplémentaire ne vous est facturé, et vous n'êtes pas facturé pour des tarifs supplémentaires à la demande. Vos unités de travail individuelles sont placées en file d'attente.
Par exemple :
- Une phase de requête nécessite 2 000 emplacements, mais seulement 1 000 emplacements sont disponibles.
- BigQuery utilise ces 1 000 emplacements et place les 1 000 autres en file d'attente.
- Par la suite, si 100 emplacements se libèrent, ils récupèrent de façon dynamique 100 unités de travail parmi les 1 000 unités de travail en attente. Il reste donc 900 unités de travail en attente.
- Par la suite, si 500 emplacements se libèrent, ils récupèrent de façon dynamique 500 unités de travail parmi les 900 unités de travail en attente. Il reste donc 400 unités de travail en attente.
Si la charge de travail nécessite plus d'emplacements que ceux disponibles pour la réservation, la durée d'exécution du job peut augmenter, car les jobs attendent que des emplacements soient disponibles. C'est ce qu'on appelle la concurrence pour les créneaux. La contention d'emplacements peut augmenter si la demande de charge de travail est beaucoup plus importante que les emplacements disponibles pour la réservation.
Priorisation de la capacité
Lorsque BigQuery fait face à une forte demande de ressources d'emplacements dans une région spécifique, il gère les conflits en priorisant la capacité. Cette priorisation garantit que les clients disposant de modèles de capacité de niveau supérieur sont moins affectés. Le système donne la priorité à la capacité dans l'ordre suivant :
- Lignes de base et capacité engagée des éditions Enterprise Plus et Enterprise.
- Capacité autoscalée Enterprise Plus.
- Capacité à autoscaling de l'édition Enterprise.
- Édition Standard et capacité à la demande.
En cas de conflit dans une région, les requêtes de capacité de l'édition Standard et à la demande sont plus susceptibles de subir des retards d'accès, car le système alloue d'abord les ressources aux éditions de niveau supérieur.
Planification équitable dans BigQuery
BigQuery alloue la capacité d'emplacements dans une seule réservation à l'aide d'un algorithme appelé planification équitable.
Le programmeur BigQuery applique un partage équitable des emplacements entre les projets avec des requêtes en cours d'exécution au sein d'une réservation, puis entre les jobs d'un projet donné. Le planificateur assure une équité à terme. Pendant de courtes périodes, certaines tâches peuvent obtenir une part disproportionnée des emplacements, mais le planificateur finit par corriger cette inégalité. L'objectif du planificateur est de trouver un équilibre entre l'éviction agressive des tâches en cours (ce qui entraîne un gaspillage du temps d'utilisation des emplacements) et une attitude trop indulgente (où les tâches de longue durée obtiennent une part disproportionnée de la durée de l'utilisation de l'emplacement).
La planification équitable garantit que chaque requête a accès à tous les emplacements disponibles à tout moment, et que la capacité est réaffectée de manière dynamique et automatique aux requêtes actives, au fil de l'évolution de leurs besoins. Les requêtes s'exécutent, et les nouvelles requêtes sont soumises pour exécution dans les conditions suivantes :
- Lorsqu'une nouvelle requête est soumise, la capacité est automatiquement réaffectée aux requêtes en cours d'exécution. Les unités de travail individuelles peuvent être mises en pause, réactivées et placées en file d'attente de manière optimale en fonction des capacités disponibles pour chaque requête.
- Lorsqu'une requête se termine, la capacité consommée par cette requête peut immédiatement être utilisée par toutes les autres.
- Chaque fois que les besoins d'une requête changent en raison des modifications apportées au DAG dynamique de celle-ci, BigQuery réévalue automatiquement la disponibilité en capacité pour cette requête et pour toutes les autres, et réaffecte ou met en pause les emplacements si nécessaire
Selon sa complexité et sa taille, une requête peut ne pas nécessiter tous les emplacements auxquels elle a droit, ou en nécessiter davantage. Grâce à un fonctionnement dynamique et à la planification équitable, BigQuery permet une utilisation complète de tous les emplacements à tout moment.
Si une tâche importante a toujours besoin d'un nombre d'emplacements supérieur à celui qu'elle reçoit du programmeur, envisagez de créer une réservation supplémentaire avec le nombre d'emplacements requis et d'attribuer la tâche à cette réservation.
Pour illustrer la planification équitable, supposons que vous disposiez de la configuration de réservation suivante :
- Réservation
A, qui comporte 1 000 emplacements de référence sans autoscaling - Projet
Aet projetB, qui sont attribués à votre réservation
Scénario 1 : Dans le projet A, vous exécutez la requête A (une requête simultanée) qui nécessite une utilisation élevée des emplacements, et dans le projet B, vous exécutez 20 requêtes simultanées. Même si un total de 21 requêtes utilisent la réservation A, la répartition des emplacements est la suivante :
- Le projet
Areçoit 500 emplacements, et la requêteAs'exécute avec 500 emplacements. - Le projet
Breçoit 500 emplacements partagés entre ses 20 requêtes.
Scénario 2 : Dans le projet A, vous exécutez la requête A (une requête simultanée) qui nécessite 100 emplacements pour s'exécuter, et dans le projet B, vous exécutez 20 requêtes simultanées.
Étant donné que la requête A ne nécessite pas 50% de la réservation, la répartition des emplacements est la suivante :
- Le projet
Areçoit 100 emplacements, et la requêteAs'exécute avec 100 emplacements. - Le projet
Breçoit 900 emplacements partagés entre ses 20 requêtes.
Inversement, examinons la configuration de réservation suivante :
- Réservation
B, qui comporte 1 000 emplacements de référence sans autoscaling. - 10 projets, tous attribués à la réservation
B.
Supposons que les 10 projets exécutent des requêtes dont la demande d'emplacements est suffisante. Chaque projet reçoit alors un dixième du nombre total d'emplacements de réservation (soit 100 emplacements), quel que soit le nombre de requêtes exécutées sur chaque projet.
Quotas et limites des emplacements
Les quotas et limites d'emplacements fournissent une protection pour BigQuery. Les différents modèles de tarification utilisent différents types de quotas d'emplacements, comme suit :
Modèle de tarification à la demande : vous êtes soumis à une limite maximale d'emplacements simultanés pour la tarification à la demande avec une capacité d'utilisation intensive temporaire. En fonction de vos charges de travail, l'accès à un plus grand nombre d'emplacements peut améliorer les performances des requêtes.
Modèle de tarification basé sur la capacité : les quotas et limites de réservation définissent le nombre maximal d'emplacements que vous pouvez allouer à toutes les réservations dans un même emplacement géographique. Si vous utilisez l'autoscaling, la somme de vos tailles de réservation maximales ne peut pas dépasser cette limite. Vous ne payez que pour vos réservations et vos engagements, pas pour les quotas. Pour savoir comment augmenter votre quota d'emplacements, consultez Demander une augmentation de quota.
Notez la distinction entre les emplacements alloués (qui ont un impact sur votre quota et votre facturation) et les emplacements utilisés (qui représentent le calcul actif). Pour une comparaison détaillée entre les deux, consultez Comprendre les métriques d'emplacement.
Pour vérifier le nombre d'emplacements que vous utilisez, consultez Surveiller BigQuery.
Emplacements inactifs
Le concept d'emplacements inactifs ne s'applique qu'au modèle de tarification basé sur la capacité et non aux emplacements autoscalés. Les emplacements sont considérés comme "inactifs" dans deux scénarios :
- Emplacements d'engagements qui ne sont alloués à aucune référence de réservation.
- Les emplacements qui sont alloués à une référence de réservation, mais qui ne sont pas activement utilisés par les jobs de cette réservation.
Pour maximiser la valeur et l'efficacité de la capacité que vous avez achetée, BigQuery est conçu pour partager automatiquement ces emplacements inactifs. Par défaut, les requêtes exécutées dans une réservation peuvent utiliser les emplacements inactifs des autres réservations du même projet d'administration.
Lorsque la réservation qui "possède" ces emplacements en a besoin pour un job, BigQuery les récupère immédiatement. La restitution des emplacements empruntés s'effectue de manière fluide en quelques millisecondes pour que la charge de travail de la réservation propriétaire ne soit pas affectée. Pendant ce bref transfert, vous pouvez observer dans vos graphiques de surveillance que la consommation totale d'emplacements dépasse brièvement votre capacité totale pour toutes les réservations. Il s'agit d'un artefact normal et attendu du processus de préemption et d'allocation des emplacements. Cette utilisation supplémentaire temporaire ne vous est pas facturée.
Par exemple, supposons que vous ayez la configuration de réservation suivante :
project_aest attribué àreservation_a, qui compte 500 emplacements de référence sans autoscaling.project_best attribué àreservation_b, qui comporte 100 emplacements de référence sans autoscaling.- Les deux réservations se trouvent dans la même région et le même projet d'administration, et aucun autre projet n'est attribué à ces réservations.
Vous exécutez query_b dans project_b. Si aucune requête n'est en cours d'exécution dans project_a, query_b a accès aux 500 emplacements inactifs depuis reservation_a. Tant que query_b est en cours d'exécution, il peut utiliser jusqu'à 600 emplacements : 100 emplacements de référence et 500 emplacements inactifs.
Pendant l'exécution de query_b, supposons que vous exécutiez query_a dans project_a, qui peut utiliser 500 emplacements.
- Étant donné que 500 emplacements de référence sont réservés pour
project_a,query_adémarre immédiatement et se voit allouer 500 emplacements. - Le nombre d'emplacements alloués à
query_bdiminue rapidement à 100 emplacements de référence. - Les requêtes supplémentaires exécutées dans
project_bpartagent ces 100 emplacements. Si les requêtes suivantes ne disposent pas de suffisamment d'emplacements pour démarrer, elles sont mises en file d'attente jusqu'à ce que les requêtes en cours d'exécution se terminent et que des emplacements deviennent disponibles.
Dans cet exemple, si project_b a été attribué à une réservation sans emplacements de référence ni autoscaling, query_b n'aura aucun emplacement après le démarrage de query_a. BigQuery mettrait en pause query_b jusqu'à ce que des emplacements inactifs soient disponibles ou que la requête expire. Les requêtes supplémentaires dans project_b seraient mises en file d'attente jusqu'à ce que des emplacements inactifs soient disponibles.
Contrôler et limiter le partage des emplacements inactifs
Pour empêcher une réservation spécifique d'emprunter des emplacements inactifs à d'autres réservations, définissez sa propriété ignore_idle_slots sur "true". Notez que ce paramètre ne contrôle que l'emprunt, pas le prêt. Une réservation dont la valeur ignore_idle_slots est définie sur "true" ne peut plus emprunter de capacité, mais elle peut toujours prêter ses propres emplacements inactifs à d'autres réservations qui en ont besoin. Tant que ignore_idle_slots est défini sur "false", une réservation peut avoir un nombre d'emplacements de 0 et avoir toujours accès aux emplacements inutilisés.
En plus de ignore_idle_slots, vous pouvez utiliser les mécanismes suivants pour gérer et contrôler le partage d'emplacements inactifs entre vos charges de travail :
- Équité basée sur les réservations : répartit les emplacements inactifs de manière égale entre les réservations plutôt qu'entre les projets individuels, ce qui empêche les charges de travail multiprojets de monopoliser le pool d'emplacements inactifs. Pour activer ce paramètre, consultez Activer l'équité basée sur les réservations.
- Réservations prévisibles : établit des limites de capacité maximale lors de la consommation de capacité (y compris les emplacements inactifs), ce qui garantit un scaling prévisible des ressources sans pics inattendus. Pour connaître les étapes de configuration, consultez Créer une réservation prévisible.
- Groupes de réservations : regroupez les réservations associées pour limiter la consommation totale d'emplacements au sein du groupe et prioriser le partage des emplacements inactifs au sein du groupe avant de les partager dans l'organisation. Pour configurer des groupes, consultez Créer un groupe de réservations.
Il existe deux restrictions clés concernant le partage des créneaux disponibles :
- Vous ne pouvez pas partager des emplacements inactifs entre des réservations d'éditions différentes.
- Les attributions de type
ML_EXTERNALfont exception à la règle, car les emplacements utilisés par les tâches de création de modèles externes BigQuery ML ne sont pas préemptifs. Les emplacements d'une réservation avec les types d'attributionML_EXTERNALetQUERYne sont disponibles que pour les autres tâches de requête lorsque ceux-ci ne sont pas occupés par les tâchesML_EXTERNAL. De plus, ces tâches ne peuvent pas utiliser les emplacements inactifs associés à d'autres réservations.
Équité basée sur les réservations
Avec l'équité basée sur les réservations, BigQuery priorise et alloue les emplacements inactifs de manière égale entre toutes les réservations d'un même projet d'administration, quel que soit le nombre de projets exécutant des jobs dans chaque réservation. Chaque réservation reçoit une part similaire de la capacité disponible dans le pool d'emplacements inactifs, puis ses emplacements sont répartis équitablement entre ses projets. Cette fonctionnalité n'est disponible qu'avec les éditions Enterprise ou Enterprise Plus.
Le graphique suivant montre comment les emplacements inactifs sont répartis sans que l'équité basée sur les réservations soit activée :
Dans ce graphique, les emplacements inactifs sont partagés équitablement entre les projets.
Si l'équité basée sur les réservations n'est pas activée, les emplacements inactifs disponibles sont répartis équitablement entre les projets des réservations.
Le graphique suivant montre comment les emplacements inactifs sont répartis lorsque l'équité basée sur les réservations est activée :
Dans ce graphique, les emplacements inactifs sont partagés équitablement entre les réservations, et non entre les projets.
Lorsque l'équité basée sur les réservations est activée, les emplacements inactifs disponibles sont répartis de manière égale entre les réservations.
Lorsque vous activez l'équité basée sur les réservations, examinez votre consommation de ressources pour gérer la disponibilité des emplacements et les performances des requêtes.
Évitez de vous fier uniquement aux emplacements inactifs pour les charges de travail de production avec des exigences de temps strictes. Ces jobs doivent utiliser des emplacements de référence ou à autoscaling. Nous vous recommandons d'utiliser des emplacements inactifs pour les jobs de priorité inférieure, car les emplacements peuvent être préemptés à tout moment.
Autoscaling des emplacements
La section suivante traite des emplacements d'autoscaling et de leur fonctionnement avec les réservations.
Utiliser les réservations d'autoscaling
Vous n'avez pas besoin de souscrire des engagements d'emplacements avant de créer des réservations d'autoscaling. Les engagements d'emplacements offrent un tarif réduit pour les emplacements utilisés de manière cohérente, mais sont facultatifs avec les réservations d'autoscaling. Pour créer une réservation d'autoscaling, vous attribuez à une réservation un nombre maximal d'emplacements (la taille maximale de la réservation). Vous pouvez identifier le nombre maximal d'emplacements d'autoscaling en soustrayant la taille de réservation maximale de tous les emplacements de référence facultatifs attribués à la réservation.
Lorsque vous créez des réservations d'autoscaling, tenez compte des points suivants :
- BigQuery procède au scaling des réservations presque instantanément jusqu'à ce qu'il atteigne le nombre d'emplacements requis pour exécuter les jobs, ou le nombre maximal d'emplacements disponibles pour la réservation. Les emplacements sont toujours ajustés automatiquement à un multiple de 50.
- Contrairement aux emplacements de référence, BigQuery ne réserve pas d'emplacements d'autoscaling à l'avance. Cette capacité, qui fait le lien entre vos emplacements de référence et la taille maximale de la réservation, dépend de la disponibilité actuelle du système. En période de forte demande, les contraintes de capacité peuvent retarder l'augmentation de la capacité.
- L'augmentation est basée sur l'utilisation réelle et est arrondie à la tranche de 50 emplacements la plus proche.
- Vos emplacements avec autoscaling sont facturés selon les tarifs des calculs de capacité de votre édition associée lors du scaling à la hausse. Vous êtes facturé pour le nombre d'emplacements avec scaling, et non pour le nombre d'emplacements utilisés. Ces frais s'appliquent même si la tâche qui entraîne le scaling à la hausse de BigQuery échoue. Pour cette raison, n'utilisez pas le schéma d'informations sur les jobs pour faire correspondre la facturation. Consultez plutôt Surveiller l'autoscaling à l'aide d'un schéma d'informations.
- Bien que le nombre d'emplacements évolue toujours par multiples de 50, le scaling peut ajouter plus de 50 emplacements en une seule fois. Par exemple, si votre charge de travail nécessite 450 emplacements supplémentaires, BigQuery peut tenter de procéder à un scaling à la hausse avec 450 emplacements en une seule fois pour répondre à la demande de capacité.
- BigQuery réduit la capacité lorsque les jobs associés à la réservation n'en ont plus besoin. Par défaut, la capacité est facturée à la seconde avec une durée minimale d'une minute. Vous pouvez activer le scaling fluide BigQuery au niveau de la réservation pour une facturation à la seconde sans durée minimale.
Toute capacité à autoscaling est conservée pendant au moins 60 secondes. Cette période de 60 secondes est appelée "fenêtre de réduction". Tout nouveau pic de capacité réinitialise la fenêtre de réduction de la capacité, en considérant l'ensemble du niveau de capacité comme une nouvelle autorisation. Toutefois, si 60 secondes ou plus se sont écoulées depuis la dernière augmentation de la capacité et que la demande est moins importante, le système réduit la capacité sans réinitialiser la fenêtre de réduction, ce qui permet des diminutions consécutives sans délai imposé.
Par exemple, si votre capacité de charge de travail initiale évolue jusqu'à 100 emplacements, le pic est conservé pendant au moins 60 secondes. Si, au cours de cette période de scaling à la baisse, votre charge de travail atteint un nouveau pic de 200 emplacements, une nouvelle période de scaling à la baisse commence pendant 60 secondes. Si aucun nouveau pic ne se produit pendant cette période de scaling à la baisse, votre charge de travail commence à être réduite à la fin des 60 secondes.
Prenons l'exemple détaillé suivant : à 12:00:00, votre capacité initiale passe à 100 emplacements et l'utilisation dure une seconde. Ce pic est conservé pendant au moins 60 secondes, à partir de 12:00:00. Une fois les 60 secondes écoulées (à 12:01:01), si la nouvelle utilisation est de 50 emplacements, BigQuery réduit la capacité à 50 emplacements. Si, à 12:01:02, la nouvelle utilisation est de 0 emplacement, BigQuery réduit à nouveau immédiatement la capacité à 0 emplacement. Une fois la fenêtre de réduction de capacité terminée, BigQuery peut réduire la capacité plusieurs fois de suite sans nécessiter de nouvelle fenêtre de réduction de capacité.
Scaling fluide BigQuery
Le scaling fluide de BigQuery supprime la durée minimale d'une minute requise par l'autoscaling standard et ajuste votre capacité d'emplacements de seconde en seconde. Cette fonctionnalité ne modifie pas les incréments de scaling de 50 emplacements.
Pour s'adapter rapidement aux demandes de réservation, le scaling fluide de BigQuery a un impact sur la répartition du partage des emplacements inactifs entre les réservations sur de courts intervalles de temps. Cela se traduit par un nombre d'emplacements inactifs légèrement supérieur ou inférieur à la part équitable exacte d'une réservation.
Pour savoir comment activer cette fonctionnalité, consultez Mettre à jour les réservations.
Pour les réservations utilisant la reprise après sinistre gérée, le scaling fluide BigQuery doit être activé dans les régions principale et secondaire pour garantir une facturation à la seconde après un basculement.
Pour savoir comment utiliser l'autoscaling, consultez Gérer les réservations de charge de travail.
Utiliser des réservations avec des emplacements de référence et d'autoscaling
En plus de spécifier la taille de réservation maximale, vous pouvez éventuellement spécifier un nombre de référence d'emplacements par réservation. Le nombre de référence correspond au nombre minimal d'emplacements qui seront toujours alloués à la réservation. Ces emplacements vous seront toujours facturés. Les emplacements d'autoscaling ne sont ajoutés qu'après la consommation de tous les emplacements de référence (et les emplacements inactifs, le cas échéant). Vous pouvez partager des emplacements de référence inactifs dans une réservation avec d'autres réservations nécessitant plus de capacité.
Vous pouvez augmenter le nombre d'emplacements de référence dans une réservation toutes les deux ou trois minutes, à condition que BigQuery dispose de la capacité nécessaire lorsque vous effectuez la demande. Si vous souhaitez réduire le nombre d'emplacements de référence, vous ne pouvez le faire qu'une fois par heure si vous avez récemment modifié votre capacité d'emplacements de référence et que vos emplacements de référence dépassent vos emplacements sur engagement. Autrement, vous pouvez réduire vos emplacements de référence toutes les deux ou trois minutes.
Les emplacements de référence et d'autoscaling sont destinés à fournir de la capacité en fonction de votre charge de travail récente. Si vous prévoyez une charge de travail exceptionnellement importante, nous vous recommandons d'augmenter votre capacité de référence bien avant l'événement plutôt que de vous appuyer sur des emplacements d'autoscaling. Étant donné que les augmentations de référence dépendent de la capacité disponible de BigQuery, la planification à l'avance vous donne les meilleures chances d'obtenir les emplacements dont vous avez besoin. Si votre demande d'augmentation de capacité échoue, attendez 15 minutes, puis réessayez.
Si la réservation ne comporte pas d'emplacements de référence ou n'est pas configurée pour emprunter des emplacements inactifs à partir d'autres réservations, BigQuery tente d'effectuer le scaling. Autrement, les emplacements de référence doivent être pleinement utilisés avant le scaling.
Les réservations utilisent et ajoutent des emplacements dans l'ordre de priorité suivant :
- Nombre d'emplacements de base.
- Partage d'emplacements inactifs (si cette option est activée). Les réservations ne peuvent partager que des emplacements de référence inactifs ou des emplacements sur engagement d'autres réservations créées avec la même édition et la même région.
- Emplacements liés à l'autoscaling.
Dans l'exemple suivant, le nombre d'emplacements s'ajuste à partir d'une quantité de référence spécifiée. Les réservations etl et dashboard ont respectivement une taille de référence de 700 et 300 emplacements.
Dans cet exemple, la réservation etl peut évoluer jusqu'à 1 300 emplacements (700 emplacements de référence et 600 emplacements liés à l'autoscaling). Si la réservation dashboard n'est pas utilisée, la réservation etl peut utiliser les 300 emplacements de la réservation dashboard si aucun job les concernant n'est en cours d'exécution, ce qui conduit à un maximum de 1 600 emplacements possibles.
La réservation dashboard peut évoluer jusqu'à 1 100 emplacements (300 emplacements de référence et 800 emplacements liés à l'autoscaling). Si la réservation etl est complètement inactive, la réservation dashboard peut évoluer jusqu'à un maximum de 1 800 emplacements (300 emplacements de référence, 800 emplacements liés à l'autoscaling et 700 emplacements inactifs dans la réservation etl).
Si la réservation etl nécessite plus de 700 emplacements de référence, qui sont toujours disponibles, elle tente d'ajouter des emplacements en utilisant les méthodes suivantes dans l'ordre :
- 700 emplacements de référence.
- Partage des emplacements inactifs avec les 300 emplacements de référence dans la réservation
dashboard. Votre réservation ne partage que les emplacements de référence inactifs avec d'autres réservations créées avec la même édition. - Scaling à la hausse de 600 emplacements supplémentaires jusqu'à la taille maximale de la réservation.
Utiliser des engagements d'emplacements
L'exemple suivant illustre l'autoscaling des emplacements à l'aide d'engagements de capacité.
À l'instar des valeurs de référence de réservation, les engagements d'emplacements vous permettent d'allouer un nombre fixe d'emplacements disponibles à toutes les réservations. Contrairement aux emplacements de référence, un engagement ne peut pas être réduit pendant la durée de l'engagement. Les engagements d'emplacements sont facultatifs, mais peuvent réduire les coûts si des emplacements de référence sont requis pour de longues périodes. Les engagements d'emplacement permettent de couvrir les emplacements de référence de vos réservations. Toute capacité d'emplacements inutilisée est ensuite partagée en tant qu'emplacements inactifs entre d'autres réservations. Les engagements d'emplacements ne s'appliquent pas aux emplacements d'autoscaling. Pour vous assurer de bénéficier du tarif réduit pour vos emplacements engagés, vérifiez que vos engagements d'emplacements sont suffisants pour couvrir vos emplacements de référence.
Dans cet exemple, vous êtes facturé selon un tarif prédéfini pour les emplacements d'engagement de capacité. Vous êtes facturé au tarif de l'autoscaling pour le nombre d'emplacements d'autoscaling après l'activation de l'autoscaling et l'ajustement des réservations. Pour le taux d'autoscaling, le nombre d'emplacements mis à l'échelle vous est facturé, et non le nombre d'emplacements utilisés.
L'exemple suivant montre les réservations lorsque le nombre d'emplacements de référence dépasse le nombre d'emplacements engagés.
Dans cet exemple, il existe un total de 1 000 emplacements de référence entre les deux réservations, 500 de la réservation etl et 500 de la réservation dashboard. Toutefois, l'engagement ne couvre que 800 emplacements. Dans ce scénario, les emplacements excédentaires sont facturés au tarif de paiement à l'usage (PAYG).
Nombre maximal d'emplacements disponibles
Vous pouvez calculer le nombre maximal d'emplacements qu'une réservation peut utiliser en additionnant les emplacements de référence, le nombre maximal d'emplacements avec autoscaling et tous les emplacements dans les engagements qui ont été créés avec la même édition et qui ne sont pas couverts par les emplacements de référence. L'exemple suivant est configuré comme suit :
- Un engagement de capacité de 1 000 emplacements annuels. Ces emplacements sont attribués en tant qu'emplacements de référence dans la réservation
etlet la réservationdashboard. - 700 emplacements de référence attribués à la réservation
etl. - 300 emplacements de référence attribués à la réservation
dashboard. - 600 emplacements liés à l'autoscaling pour la réservation
etl. - 800 emplacements liés à l'autoscaling pour la réservation
dashboard.
Pour la réservation etl, le nombre maximal d'emplacements possible est égal au nombre d'emplacements de référence etl (700), plus le nombre d'emplacements de référence dashboard (300, si tous les emplacements sont inactifs), plus le nombre maximal d'emplacements liés à l'autoscaling (600). Le nombre maximal d'emplacements que la réservation etl peut utiliser dans cet exemple est donc de 1 600. Ce nombre dépasse celui de l'engagement de capacité.
Dans l'exemple suivant, l'engagement annuel dépasse le nombre d'emplacements de référence attribués.
Dans cet exemple, nous avons :
- Un engagement de capacité de 1 600 emplacements annuels.
- Une taille de réservation maximale de 1 500 (y compris 500 emplacements d'autoscaling).
- 1 000 emplacements de référence attribués à la réservation
etl.
Le nombre maximal d'emplacements disponibles pour la réservation est égal au nombre d'emplacements de référence (1 000), plus tous les emplacements inactifs sur engagement qui ne sont pas dédiés aux emplacements de référence (1 600 emplacements annuels - 1 000 emplacements de référence = 600), plus le nombre d'emplacements d'autoscaling (500). Le nombre maximal d'emplacements potentiels dans cette réservation est donc de 2 100. Les emplacements avec autoscaling sont des emplacements supplémentaires qui dépassent l'engagement de capacité.
BigQuery peut parfois utiliser la capacité système BigQuery disponible pour traiter votre requête plus rapidement que votre limite d'emplacements ne le permet normalement. Dans ce cas, BigQuery retardera le renvoi des résultats finaux de votre requête jusqu'à ce que votre capacité d'emplacement standard couvre le pic d'utilisation. Vous ne serez ainsi jamais facturé au-delà de votre limite, tout en tenant compte du calcul total utilisé.
Bonnes pratiques en matière d'autoscaling
Lors de la première utilisation de l'autoscaler, définissez le nombre d'emplacements d'autoscaling sur un nombre significatif en fonction des performances passées et attendues. Une fois la réservation créée, surveillez activement le taux d'échec, les performances et la facturation, puis ajustez le nombre d'emplacements d'autoscaling si nécessaire.
L'autoscaler dispose d'une durée minimale de 1 minute avant de réduire la capacité. Il est donc important de définir le nombre maximal d'emplacements à scaling automatique pour trouver un équilibre entre les performances et les coûts. Si le nombre maximal d'emplacements avec autoscaling est trop élevé et que votre tâche peut utiliser tous les emplacements pour terminer une tâche en quelques secondes, vous devrez tout de même payer le coût des emplacements maximum pendant toute la minute. Si vous réduisez le nombre maximal d'emplacements à la moitié de la valeur actuelle, votre réservation est réduite et la tâche peut utiliser plus de
slot_secondsau cours de cette minute, ce qui réduit le gaspillage. Pour déterminer vos besoins en termes d'emplacements, consultez Surveiller les performances des tâches. Pour une autre approche pour déterminer vos besoins en termes d'emplacements, consultez Afficher les recommandations d'emplacements d'édition.Le nombre d'emplacements utilisés peut parfois dépasser la somme de vos emplacements de base et de vos emplacements avec autoscaling. Les emplacements excédentaires (par rapport à la somme de vos emplacements de base et de vos emplacements avec autoscaling) ne vous sont pas facturés.
L'autoscaler est plus efficace pour les charges de travail lourdes et de longue durée, telles que les charges de travail comportant plusieurs requêtes simultanées. Évitez d'envoyer des requêtes une par une, car chaque requête adapte la réservation, qui reste adaptée pendant au moins une minute. Si vous envoyez des requêtes en continu, ce qui entraîne une charge de travail constante, la définition d'une référence et l'achat d'un engagement vous permettent de bénéficier d'une capacité constante à un prix réduit.
L'autoscaling BigQuery est soumis à une disponibilité de capacité. BigQuery tente de répondre à la demande de capacité des clients en fonction de l'historique d'utilisation. Vous pouvez définir une base d'emplacements facultative pour que les emplacements soient immédiatement disponibles. Les références doivent être payées que vous les utilisiez ou non. Pour vous assurer de la capacité suffisante pour les demandes importantes et peu organiques (telles que les jours fériés), contactez l'équipe BigQuery plusieurs semaines à l'avance.
Les emplacements de base sont toujours facturés. Si un engagement de capacité expire, vous devrez peut-être ajuster manuellement la quantité d'emplacements de base dans vos réservations afin d'éviter des frais inutiles. Par exemple, supposons que vous disposez d'un engagement d'un an avec 100 emplacements et d'une réservation avec 100 emplacements de base. L'engagement expire et n'offre pas d'option de renouvellement. Une fois l'engagement expiré, vous payez 100 emplacements de base au tarif à l'utilisation.
Observabilité
Pour en savoir plus sur la surveillance de l'utilisation des emplacements et des performances des jobs avec l'autoscaling, consultez Surveiller l'autoscaling.