BigQuery slot reservations are a way to guarantee compute capacity for your queries, ensuring consistent performance even during peak times.

Imagine you have a busy kitchen (your BigQuery project). Without reservations, anyone can grab any available cooking station (a slot). If too many people try to cook at once, stations get crowded, and meals take longer. Slot reservations are like booking specific cooking stations in advance for your most important dishes. This means your critical queries always have a dedicated spot, no matter how busy the kitchen gets.

Here’s how it looks in practice. Let’s say you want to reserve 100 slots for your analytics team.

First, you need to navigate to the slot reservation UI in the Google Cloud Console. You’ll select your project, then go to "BigQuery" -> "Administration" -> "Capacity Management."

On the "Reservations" tab, click "Create reservation."

You’ll be presented with a form:

  • Reservation name: analytics_team_reservation (This is a unique identifier for your reservation.)
  • Location: US (Choose the region where your data resides and where you want the slots to be available. This must match your dataset locations.)
  • Edition: Standard or Enterprise (The edition determines the pricing and features available. Standard is typically for most use cases, while Enterprise offers more advanced features like commitment flexibility.)
  • Commitment plan: Flex or Annual or 3-year (Flex commitments are billed monthly and can be canceled with 30 days’ notice. Annual and 3-year commitments offer significant discounts but lock you in for the commitment period.)
  • Number of slots: 100 (This is the crucial part – how much compute capacity you’re buying.)

After creating the reservation, it will appear in your list. The next step is to assign this reservation to your workloads. This is done through "Assignments."

Go to the "Assignments" tab and click "Create assignment."

  • Reservation: Select the reservation you just created, analytics_team_reservation.
  • Assignee type: Choose what you want to assign the reservation to. Common options are:
    • Project: Assign to a specific Google Cloud project. This is the most common scenario.
    • Folder: Assign to a folder, distributing slots to all projects within that folder.
    • Organization: Assign to your entire organization.
    • Reservation: You can also assign a reservation to another reservation, creating a hierarchy.
  • Assignee: If you chose Project, enter the project ID, e.g., my-analytics-project-id.

Once the assignment is active, any queries run within my-analytics-project-id will attempt to use slots from analytics_team_reservation first. If the reservation is fully utilized, queries will spill over to the on-demand pool (if available and not disabled).

The core problem slot reservations solve is performance variability. Without them, your query performance can fluctuate wildly based on how many other users or jobs are running in your BigQuery project or shared Google Cloud organization. This is especially problematic for critical dashboards, ETL processes, or interactive analytics where users expect consistent, fast results.

Internally, BigQuery slots are units of computational capacity. They represent a certain amount of CPU, memory, and I/O that a query can consume. When you purchase a reservation, you are essentially pre-paying for a dedicated pool of these slots. The BigQuery scheduler then prioritizes queries from assigned projects/folders/orgs to use these dedicated slots before considering the shared, on-demand pool.

The key levers you control are:

  • Number of slots: Directly scales your guaranteed capacity. More slots mean more queries can run concurrently at full speed.
  • Commitment plan: Flex offers flexibility but is more expensive per slot. Annual and 3-year offer cost savings but require a longer-term commitment.
  • Assignment: Dictates which workloads get to use your reserved capacity. This is critical for ensuring your most important jobs are prioritized.
  • Location: Slots are regional. You need reservations in the same region as your datasets to use them.

A crucial, often overlooked aspect of slot reservations is their interaction with query execution plans. BigQuery’s optimizer aims to use the minimum number of slots necessary for a query to complete within a reasonable time. When you have a reservation, this optimization still happens, but it’s within the context of your reserved capacity. This means that even if a query could theoretically use 500 slots to finish in 10 seconds, if you only have a reservation of 100 slots and the query is assigned to it, BigQuery will adjust the execution plan to fit within those 100 slots, potentially taking longer but ensuring other queries in the reservation also get their share. This dynamic adjustment is how reservations provide consistent throughput rather than just raw speed for individual queries.

Understanding the difference between Flex and Commitment plans is vital for cost management. A Flex commitment gives you month-to-month flexibility but at a higher per-slot cost. If your capacity needs are stable, committing to an Annual or 3-year plan can yield substantial savings, often 40-60% or more, but you’re locked into that spend.

The next logical step after mastering slot reservations is understanding how to monitor their utilization and optimize your slot allocation.

Want structured learning?

Take the full Bigquery course →