Get a free observability report to evaluate the potential savingsContact us →
Uso de slots3 min de lectura

Uso de slots de BigQuery por minuto

El uso de slots por minuto es la granularidad correcta para depurar problemas de rendimiento y entender patrones de picos. Esta consulta muestra exactamente cuándo se dispara la demanda de slots y cuánto duran los picos.

Por qué importa

Los promedios horarios pueden enmascarar picos de slots cortos pero intensos que causan encolamiento de consultas y degradación del rendimiento. Los datos por minuto revelan estos picos, ayudándole a determinar si sus slots máximos del autoscaler de Editions están lo suficientemente altos y si la programación de consultas necesita ajustarse.

Cómo funciona

Agrega period_slot_ms desde JOBS_TIMELINE a granularidad MINUTO, dividiendo por 60,000 (milisegundos por minuto). El relleno del calendario crea un conjunto de datos continuo minuto a minuto.

Consulta 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
Reemplace your-project y region-us con su proyecto GCP y la región de su dataset.

Explicación de la consulta

Mismo patrón que horario/diario pero a granularidad de minuto. El divisor ms_per_min es 60,000 ms. Nota: para ventanas de retención más largas (>7 días), esta consulta puede devolver un conjunto de resultados grande — reduzca lookback_days para análisis a nivel de minuto.

Puntos clave

  • lightbulb

    Los picos de slots que duran solo 1-2 minutos son típicamente consultas ad hoc de usuarios — considere establecer límites de slots por usuario.

  • lightbulb

    Las mesetas sostenidas de 10-15 minutos indican ejecuciones de pipelines por lotes — optimice las consultas más pesadas en esa ventana.

  • lightbulb

    Si los picos superan sus slots máximos de Editions, las consultas están siendo encoladas — aumente max_slots o escalone las cargas.

  • lightbulb

    Compare el timing de los picos con sus horarios de cron/Airflow para identificar qué pipeline causa cada ráfaga.

Mejores prácticas

  1. 1

    Use estos datos para establecer sus slots máximos del autoscaler de Editions para cubrir la demanda P99 a nivel de minuto.

  2. 2

    Mantenga lookback_days pequeño (1-3 días) cuando analice a granularidad de minuto para evitar conjuntos de resultados grandes.

  3. 3

    Cruce los picos con la consulta de consultas concurrentes para ver cuántas consultas se ejecutan simultáneamente.

  4. 4

    Configure una alerta de CloudClerk para uso sostenido de slots por encima de un umbral.

¿Quiere que CloudClerk encuentre estos ahorros automáticamente?

Nuestra plataforma se conecta a su proyecto BigQuery, ejecuta estos análisis automáticamente y entrega recomendaciones de optimización impulsadas por IA — todo con sus datos completamente anonimizados.

Guías relacionadas