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

Utilisation des slots BigQuery par minute

L'utilisation des slots à la minute est la bonne granularité pour déboguer les problèmes de performance et comprendre les modèles de pics. Cette requête montre exactement quand la demande de slots explose et combien de temps les pics durent.

Pourquoi c'est important

Les moyennes horaires peuvent masquer des pics de slots courts mais intenses qui provoquent la mise en file d'attente des requêtes et la dégradation des performances. Les données à la minute révèlent ces pics, vous aidant à déterminer si vos slots max de l'autoscaler Editions sont suffisamment élevés et si la planification des requêtes doit être ajustée.

Comment ça fonctionne

Agrège period_slot_ms depuis JOBS_TIMELINE à la granularité MINUTE, en divisant par 60 000 (millisecondes par minute). Le remplissage du calendrier crée un ensemble de données minute par minute continu.

Requête SQL

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

SQL
-- Average slot consumption per minute (zero-filled)

DECLARE lookback_days INT64 DEFAULT 3;
DECLARE ms_per_min INT64 DEFAULT 60000;

WITH minute_slots AS (
  SELECT
    TIMESTAMP_TRUNC(period_start, MINUTE) AS minute,
    ROUND(SUM(period_slot_ms) / ms_per_min, 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 minute
),
calendar AS (
  SELECT ts AS minute FROM UNNEST(GENERATE_TIMESTAMP_ARRAY(
    TIMESTAMP_TRUNC(TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL lookback_days DAY), MINUTE),
    TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), MINUTE),
    INTERVAL 1 MINUTE)) AS ts
)
SELECT
  c.minute,
  IFNULL(m.avg_slots, 0) AS avg_slots
FROM calendar c
LEFT JOIN minute_slots m ON c.minute = m.minute
ORDER BY c.minute
Remplacez your-project et region-us par votre projet GCP et la région de votre dataset.

Explication de la requête

Même modèle que horaire/quotidien mais à la granularité minute. Le diviseur ms_per_min est 60 000 ms. Notez que pour des fenêtres de rétention plus longues (>7 jours), cette requête peut retourner un grand ensemble de résultats — réduisez lookback_days pour l'analyse à la minute.

Points clés

  • lightbulb

    Les pics de slots durant seulement 1-2 minutes sont typiquement des requêtes ad hoc d'utilisateurs — envisagez de définir des limites de slots par utilisateur.

  • lightbulb

    Les plateaux soutenus de 10-15 minutes indiquent des exécutions de pipelines par lots — optimisez les requêtes les plus lourdes dans cette fenêtre.

  • lightbulb

    Si les pics dépassent vos slots max Editions, les requêtes sont mises en file d'attente — augmentez max_slots ou décalez les charges.

  • lightbulb

    Comparez le timing des pics à vos planifications cron/Airflow pour identifier quel pipeline cause chaque pic.

Meilleures pratiques

  1. 1

    Utilisez ces données pour définir vos slots max de l'autoscaler Editions pour couvrir la demande P99 à la minute.

  2. 2

    Gardez lookback_days petit (1-3 jours) lors de l'analyse à la granularité minute pour éviter les grands ensembles de résultats.

  3. 3

    Croisez les pics avec la requête de requêtes concurrentes pour voir combien de requêtes s'exécutent simultanément.

  4. 4

    Configurez une alerte CloudClerk pour une utilisation soutenue de slots au-dessus d'un seuil.

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