Check BigQuery autoscale charges by reservation minute
On this page
This check is due for a source refresh. Confirm the current documentation before you rely on provider-specific details.
Review the last day's charged autoscale slot-seconds by reservation and flag unexpected minutes before changing capacity, or you may cut a limit without evidence of waste. Compare max_slots and slot sharing because positive charges alone do not prove waste.
What you need first
- Tool
- BigQuery SQL is Google's query language for reading BigQuery data and metadata. Run this read-only query against INFORMATION_SCHEMA.RESERVATIONS_TIMELINE in the reservation administration project, using a region qualifier and the same query execution location.
- Access
- Reading this view requires bigquery.reservations.list on the project. BigQuery Resource Viewer (roles/bigquery.resourceViewer) includes this permission.
- If you do not use that tool
- Ask an authorized BigQuery administrator to run the query for the reservation administration project and region. Request the last day's positive charged autoscale slot-seconds by reservation minute, including capacity and sharing fields.
Why this is worth a look
Skipping this review can confuse a capacity ceiling with charged capacity and lead to an unsupported limit change. period_autoscale_slot_seconds is the autoscale slot-seconds charged for each minute. max_slots is a slot limit that includes baseline slots, idle slots when sharing is enabled, and autoscaling capacity. Use the charged field to select minutes for review, not the ceiling.
Start with this query
SQLRun in BigQuery against the reservation administration project with bigquery.reservations.list permission. This query reads the default project's US timeline for the last day. Match execution location to the selected region. Charges are slot-seconds; capacity fields are slots, not currency.
WITH reservation_windows AS (
SELECT
period_start,
reservation_id,
reservation_name,
project_id,
period_autoscale_slot_seconds,
max_slots,
slots_assigned,
slots_max_assigned,
ignore_idle_slots,
scaling_mode,
is_creation_region
FROM `region-us.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE`
WHERE period_start BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
AND CURRENT_TIMESTAMP()
)
SELECT
period_start,
reservation_id,
reservation_name,
project_id,
period_autoscale_slot_seconds,
max_slots,
slots_assigned,
slots_max_assigned,
ignore_idle_slots,
scaling_mode,
is_creation_region
FROM reservation_windows
WHERE period_autoscale_slot_seconds > 0
ORDER BY period_start DESC, reservation_id;How to confirm it
- 01
Choose the project and region
Set the default project to the reservation administration project, or qualify the view as `PROJECT_ID`.`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE. Replace region-us if needed and match the query execution location to that region.
- 02
Read the charged minutes
Run the SQL or request its results from your administrator. Keep the period_start filter to limit the review to the last day and filter the partition key. An empty result means no positive charged minutes matched this project, region, and window.
- 03
Compare capacity and sharing
Compare slots_assigned, the assigned slots, with slots_max_assigned, the maximum capacity including sharing. Read ignore_idle_slots as false for sharing enabled and true for sharing disabled. Check scaling_mode for how the reservation scales from baseline to max_slots.
- 04
Ask the owner about unexpected charges
Send the owner each unexpected reservation_id, period_start, and charged slot-seconds value. Ask for an explanation before proposing a limit change. Request per_second_details for minutes with reservation or autoscaling changes to inspect capacity second by second.
Before making changes
Do not treat this result as a bill total or proof that capacity should be cut. It reports charged autoscale slot-seconds, not currency or job-level usage. Assume the chosen administration project, region, and last-day window cover your intended review. Minute-level capacity fields can miss changes within a minute; this query does not include per_second_details.