Get a free observability report to evaluate the potential savingsContact us →
Concurrence3 min de lecture

Requêtes BigQuery concurrentes par minute

Cette requête compte le nombre de requêtes distinctes s'exécutant pendant chaque minute, révélant des modèles de concurrence qui affectent les performances. Une concurrence élevée peut entraîner la mise en file d'attente des requêtes sous la tarification à la demande et Editions.

Pourquoi c'est important

BigQuery a des limites de concurrence qui varient selon le modèle de facturation — 100 requêtes concurrentes pour la tarification à la demande, ou limitées par la capacité de slots de réservation pour Editions. Quand vous dépassez ces limites, les requêtes se mettent en file d'attente et attendent. Comprendre vos modèles de concurrence vous aide à éviter ces goulots d'étranglement et à planifier les charges efficacement.

Comment ça fonctionne

La requête lit depuis INFORMATION_SCHEMA.JOBS_TIMELINE_BY_PROJECT, qui enregistre l'activité des jobs par seconde. Elle déduplique par job_id, tronque les timestamps à la minute et compte les jobs distincts par période de minute.

Requête SQL

Fill in your details to get a ready-to-run query:

SQL
-- Count concurrent queries per minute to detect bottlenecks

DECLARE lookback_days INT64 DEFAULT 7;

WITH timeline AS (
  SELECT
    TIMESTAMP_TRUNC(period_start, MINUTE) AS minute,
    job_id,
    ROW_NUMBER() OVER (PARTITION BY job_id ORDER BY job_creation_time DESC) AS rn
  FROM `your-project`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_PROJECT
  WHERE job_creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL lookback_days DAY)
    AND job_type = 'QUERY'
    AND parent_job_id IS NULL
)
SELECT
  minute,
  COUNT(job_id) AS concurrent_queries
FROM timeline
WHERE rn = 1
GROUP BY minute
ORDER BY minute
Remplacez your-project et region-us par votre projet GCP et la région de votre dataset.

Explication de la requête

JOBS_TIMELINE_BY_PROJECT enregistre une ligne par job par seconde d'exécution. La déduplication ROW_NUMBER() assure que chaque job est compté une fois. parent_job_id IS NULL filtre les jobs enfants de scripts. Le COUNT par minute tronquée donne le nombre de jobs concurrents.

Points clés

  • lightbulb

    Les minutes avec >50 requêtes concurrentes risquent d'atteindre les limites de concurrence à la demande (100 par projet).

  • lightbulb

    Une concurrence élevée constante à des moments spécifiques indique un chevauchement de jobs planifiés — décalez les heures de démarrage.

  • lightbulb

    Les pics de concurrence suivis de chutes peuvent indiquer que certaines requêtes sont mises en file d'attente puis libérées par rafales.

  • lightbulb

    Une faible concurrence avec une utilisation élevée de slots signifie quelques requêtes très lourdes — stratégie d'optimisation différente de nombreuses requêtes légères.

Meilleures pratiques

  1. 1

    Décalez les heures de démarrage des pipelines de seulement 1-2 minutes pour réduire la concurrence en pointe.

  2. 2

    Utilisez les paramètres de priorité des jobs BigQuery (INTERACTIVE vs BATCH) pour éviter que les requêtes ad hoc soient mises en file d'attente derrière les jobs par lots.

  3. 3

    Surveillez les requêtes en état PENDING en utilisant la vue queued_queries.

  4. 4

    Envisagez des réservations Editions avec des max_slots adéquats pour gérer votre concurrence en pointe.

Voulez-vous que CloudClerk trouve ces économies automatiquement ?

Notre plateforme se connecte à votre projet BigQuery, exécute ces analyses automatiquement et fournit des recommandations d'optimisation basées sur l'IA — tout avec vos données entièrement anonymisées.

Guides associés