Emplacements

Un emplacement BigQuery est une unité de capacité de calcul nécessaire pour exécuter des requêtes SQL. BigQuery calcule automatiquement le nombre d'emplacements requis par chaque requête en fonction de la taille et de la complexité de cette requête.

Pour déterminer le quota d'emplacements par projet, consultez les règles relatives aux quotas en matière de requêtes.

Le nombre d'emplacements par défaut offre une capacité amplement suffisante pour la plupart des utilisateurs. L'accès à davantage d'emplacements ne garantit pas des performances plus élevées pour une requête déterminée. Une augmentation du nombre d'emplacements peut cependant améliorer les performances pour des requêtes extrêmement volumineuses ou complexes, ou à l'échelle d'un grand nombre de charges de travail simultanées. Pour vérifier le nombre d'emplacements utilisés par votre compte, consultez la page Surveiller BigQuery.

BigQuery gère automatiquement votre quota d'emplacements en fonction de l'historique, de l'utilisation et des dépenses du client. Pour les clients dont les dépenses mensuelles en analyses sont constantes, BigQuery propose des tarifs forfaitaires.

Lorsque vous souscrivez à une tarification forfaitaire, vous achetez un nombre dédié d'emplacements qui serviront au traitement de requêtes. Vous pouvez spécifier l'attribution des emplacements par zone pour tous les projets attachés à ce compte de facturation. Contactez votre conseiller commercial si les tarifs forfaitaires vous intéressent.

Exécuter des requêtes à l'aide d'emplacements

Lorsque BigQuery exécute une tâche de requête, il convertit l'instruction SQL déclarative en un graphe d'exécution divisé en une série de phases de requête. Ces dernières sont composées d'ensembles d'étapes d'exécution plus précis. BigQuery exploite une architecture parallèle fortement distribuée pour exécuter ces requêtes, et les phases modélisent les unités de travail que de nombreux nœuds de calcul potentiels peuvent exécuter en parallèle. Les phases communiquent entre elles à l'aide d'une architecture de brassage distribuée rapide qui est présentée en détail sur cette page.

L'exécution d'une requête BigQuery est dynamique, ce qui signifie que le plan de requête peut être modifié lorsqu'une requête est en cours d'exécution. Les phases introduites lors de l'exécution d'une requête permettent souvent d'améliorer la distribution des données au sein des nœuds de calcul de la requête

BigQuery peut exécuter plusieurs phases simultanément . BigQuery peut exploiter l'exécution spéculative pour accélérer une requête, et repartitionner dynamiquement une phase pour obtenir une parallélisation optimale.

Les emplacements BigQuery exécutent des unités de travail individuelles à chaque phase de la requête. Par exemple, si BigQuery détermine que le facteur de parallélisation optimal d'une phase est de 10, il demande 10 emplacements pour traiter cette phase.

Emplacements de requêtes.

Requête SQL BigQuery : DAG dynamique

Exécuter des requêtes en économisant les ressources d'emplacements

Si une requête demande un plus grand nombre d'emplacements que ce qui est actuellement 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 que vous avez souscrit, aucun emplacement ni aucuns frais supplémentaires ne vous sont facturés. Vos unités de travail individuelles sont simplement placées en file d'attente.

Exemple :

  1. Une phase de requête nécessite 2 000 emplacements, mais seulement 1 000 emplacements sont disponibles.
  2. BigQuery utilise ces 1 000 emplacements et place les 1 000 autres en file d'attente.
  3. 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.
  4. 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.
  5. Et ainsi de suite.

Planification des emplacements

Emplacements BigQuery placés en file d'attente si les besoins dépassent le nombre disponible

Planification équitable dans BigQuery

BigQuery exploite la planification équitable pour attribuer les ressources aux requêtes en concurrence. Cela signifie que chaque requête dispose d'un accès identique à 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

Planification de requêtes multiples

Planification équitable dans BigQuery

En fonction de sa complexité et de sa taille, une requête peut ne pas utiliser tous les emplacements auxquels elle a droit. Elle peut aussi devoir en utiliser plus. Grâce à un fonctionnement dynamique et à la planification équitable, BigQuery permet une utilisation complète de tous les emplacements à tout moment.