Are my BigQuery queries queueing for slots?
Per-hour slot consumption from JOBS_TIMELINE, which shows concurrency the job table cannot.
Free to run — INFORMATION_SCHEMA scans no billable bytesChecked 4 Aug 2026
JOBS and TABLE_STORAGE are region-scoped.
-- JOBS_TIMELINE reports slot usage per second-level period, so it shows
-- true concurrency rather than a per-job total smeared over its runtime.
SELECT
TIMESTAMP_TRUNC(period_start, HOUR) AS hour,
COUNT(DISTINCT job_id) AS concurrent_jobs,
ROUND(SUM(period_slot_ms) / 1000 / 3600, 2) AS slot_hours,
ROUND(SUM(period_slot_ms) / 3600000, 1) AS avg_slots_in_hour,
MAX(period_slot_ms) AS peak_period_slot_ms
FROM `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_PROJECT
WHERE period_start >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
AND job_type = 'QUERY'
GROUP BY hour
ORDER BY avg_slots_in_hour DESC
LIMIT 100;What it returns
- avg_slots_in_hour
- Average slots in use across the hour.
- concurrent_jobs
- Distinct jobs active at some point in the hour.
How to read it
- On-demand projects draw from a finite, best-effort pool. If your busiest hours sit near a flat ceiling, you are already being throttled and your measured demand understates what you would actually use.
- A flat top on this chart is the signature of contention. Genuine demand is spiky; ceilings are flat.
- JOBS_TIMELINE is much larger than JOBS. Keep the window short or the metadata query itself gets slow — it is still free, just not instant.
Run this once, or have it run every day.
Finitizer evaluates this class of question continuously against your live BigQuery estate, tracks how each number moves between runs, and turns findings into assigned tasks. Read-only and keyless.