Get a free observability report to evaluate the potential savingsContact us →
Utilisation des slots3 min de lecture

Utilisation des slots BigQuery par heure

L'utilisation horaire des slots révèle les modèles intra-journaliers de vos charges BigQuery. Cette requête vous montre exactement quand se produisent vos heures de pointe et creuses, permettant une planification plus intelligente des réservations et de l'orchestration des pipelines.

Pourquoi c'est important

La plupart des charges BigQuery ont des modèles horaires prévisibles — exécutions ETL matinales, activité analytique en milieu de journée, traitement par lots en soirée. Comprendre ces modèles vous permet de planifier les réservations pour correspondre à la demande, de décaler les pipelines pour éviter la contention et de définir des alertes significatives pour une utilisation anormale.

Comment ça fonctionne

Comme la version quotidienne, cette requête agrège period_slot_ms depuis JOBS_TIMELINE, mais tronque à la granularité HEURE et divise par les millisecondes par heure (3 600 000). Le remplissage du calendrier garantit que chaque heure a un point de données.

Requête SQL

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

SQL
-- Average slot consumption per hour (zero-filled time series)

DECLARE lookback_days INT64 DEFAULT 7;
DECLARE ms_per_hour INT64 DEFAULT 3600000;

WITH hourly_slots AS (
  SELECT
    TIMESTAMP_TRUNC(period_start, HOUR) AS hour,
    ROUND(SUM(period_slot_ms) / ms_per_hour, 2) AS avg_slots
  FROM `your-project`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE
  WHERE period_start >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL lookback_days DAY)
    AND statement_type != 'SCRIPT'
  GROUP BY hour
),
calendar AS (
  SELECT ts AS hour FROM UNNEST(GENERATE_TIMESTAMP_ARRAY(
    TIMESTAMP_TRUNC(TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL lookback_days DAY), HOUR),
    TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), HOUR),
    INTERVAL 1 HOUR)) AS ts
)
SELECT
  c.hour,
  IFNULL(h.avg_slots, 0) AS avg_slots
FROM calendar c
LEFT JOIN hourly_slots h ON c.hour = h.hour
ORDER BY c.hour
Remplacez your-project et region-us par votre projet GCP et la région de votre dataset.

Explication de la requête

Même approche que la requête quotidienne mais à la granularité horaire. Le diviseur ms_per_hour est 3 600 000. La série temporelle générée remplit les lacunes assurant un ensemble de données horaire continu pour la visualisation.

Points clés

  • lightbulb

    Les heures de pointe coïncident souvent avec les exécutions ETL/dbt planifiées — décalez-les pour réduire la demande de slots en pointe.

  • lightbulb

    Les heures creuses avec une utilisation quasi nulle représentent une capacité de réservation gaspillée sous la tarification forfaitaire.

  • lightbulb

    Identifiez l'heure avec la plus haute utilisation moyenne de slots — c'est votre pic P50 et la base du dimensionnement Editions.

  • lightbulb

    Les heures avec une utilisation de slots très variable selon les jours suggèrent des charges ad hoc qui bénéficient de l'autoscaling.

Meilleures pratiques

  1. 1

    Décalez les jobs planifiés sur les heures pour aplatir la courbe d'utilisation des slots.

  2. 2

    Utilisez des réservations Editions avec autoscaling pour gérer les pics horaires sans sur-provisionner.

  3. 3

    Configurez des alertes de coût horaires pour détecter les requêtes incontrôlables dans la même journée de travail.

  4. 4

    Exécutez les gros jobs par lots pendant les heures creuses (nuit / début de matinée) quand la contention de slots est la plus faible.

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