This page describes how to use BigQuery Reservations to help manage your BigQuery workloads.
Choose a billing model
At any point in time, you can choose to switch between on-demand and flat-rate billing models, or you can choose to mix and match the two models together. The two pricing models are complementary to each other. On-demand billing is efficient; whereas, flat-rate is predictable.
Consider the following factors when choosing flat-rate billing:
- Cost. Google recommends that your monthly analytics spend be in the ballpark of the minimum BigQuery flat-rate commitment (currently, 500 slots per month).
- Efficiency. Consider on-demand if you value efficiency because you pay per query.
- Predictability. You might prefer flat-rate if you value monthly predictability of pricing because you pay one flat monthly fee.
- Resources. Flat-rate and on-demand billing models differ in how they offer capacity. For more information, see Estimating the amount of slots to purchase.
As a new customer, you might choose to start with flat-rate. At any point in time, you can observe what your cost would have been with on-demand billing, and at any point in time you can choose the model that works for you.
You can also experiment with Flex slots to test out price and performance of flat-rate billing for your organization before settling on a steady-state workload configuration. Flex slots are a special commitment type:
- Commitment duration is only 60 seconds.
- You can cancel Flex slots any time thereafter.
- You are charged only for the seconds your commitment was deployed.
You can combine Flex slot commitments with other types of commitments. Flex slots are ideal for short-term use cases that range from minutes to days at a time:
- Planning for major calendar events, such as the tax season, Black Friday, popular media events, and video game launches.
- Meeting cyclical periods of high demand for analytics, like Monday mornings.
- Completing your data warehouse evaluations and dialing in the optimal number of slots to use.
You can also mix-and-match on-demand and flat-rate billing models. For example:
- Use on-demand billing for predictable workloads like periodic data processing and ELT.
- Use flat-rate billing for ad-hoc analytics and data science workloads.
You can use flat-rate in one region and on-demand in another region. By default, all projects use on-demand billing. Within a region, you can opt a project, folder, or organization into flat-rate billing by assigning it to a reservation. For example, if you purchase a slot commitment in the US multi-region and assign your organization to the default reservation, your organization will be on flat- rate billing in the US multi-region, but will remain on on-demand billing in all other regions.
Within a region, you can combine flat-rate and on-demand billing by explicitly assigning projects to a reservation. Any project not assigned to a reservation remains on on-demand billing. Note that you can't explicitly assign a project to use on-demand billing. Therefore, if you want to combine billing models within the same folder or organization within the same region, don't assign the folder or organization to a reservation.
Projects with on-demand billing use capacity that's separate from your committed capacity. Those projects do not affect the availability of your committed capacity.
Creating an administration project
When you create commitments and reservations, they are associated with a Google Cloud project. This project manages the BigQuery Reservations resources, and is the primary source of billing for these resources. This project does not have to be the same project that holds your BigQuery jobs.
Google recommends creating a dedicated project for Reservations resources. This project is called the administration project, because it centralizes the billing and management of your commitments. Then create one or more separate projects to hold your BigQuery jobs. If you purchase more than one plan type (for example, monthly and annual), you can put them in the same administation project.
The administration project is billed for the committed slots. Projects that use the slots are billed for storage, but not for the slots themselves.
We recommend that you enable the BigQuery Reservations API only on the administration project, so that all commitments are managed through this project.
Remember that the administation project is a convenience for managing billing and allocating slots. You can still create new projects to run BigQuery jobs and assign slots to those projects.
Estimating how many slots to purchase
BigQuery is architected to scale linearly with increased resources. Depending on the workload, incremental capacity is likely to give you incremental benefits. Therefore, choosing the optimal number of slots to purchase depends on your requirements for performance, throughput, and utility.
You can use Flex slots to experiment with the best configuration of slots. For example, you can test your workload with 500 slots, then 1,000, then 1,500, and 2,000, and observe the impact on performance.
You can also examine the current slot usage of your projects, along with the
desired monthly price that you want to pay. On-demand workloads currently have a
soft slot cap of 2,000 slots, but it is important to check how many slots are
actually being used by your projects by using
INFORMATION_SCHEMA for jobs,
Cloud Logging, the Jobs API, or BigQuery Audit
logs. For more information, see
Visualizing slots available and slots allocated.
Managing your workloads and departments using reservations
You can use BigQuery Reservations to isolate your committed capacity across workloads, teams, or departments by creating additional reservations and assigning projects to these reservations. A reservation is an isolated pool of resources with the added benefit of being able to take advantage of idle capacity across your entire organization.
For example, you might have a total committed capacity of 1,000 slots and three workload types: data science, ELT, and BI.
- You can create a
dsreservation with 500 slots, and assign all relevant Google Cloud projects to the
- You can create an
eltreservation with 300 slots, and assign projects you use for ELT workloads to the
- You can create a
bireservation with 200 slots, and assign projects connected to your BI tools to the
Instead of partitioning your capacity across workloads, you might choose to create reservations for individual teams or departments.
Managing reservations in different regions
Reservations are a regional resource. Slots purchased and reservations created in one region cannot be used in any other region. Project, folders, and organizations can all be assigned to reservations in one region and run on- demand in another. To manage reservations in another region, you must change the region in the BigQuery Reservation page:
- In the BigQuery console, click Reservations.
- Click the Location picker and select a region where you want to manage reservations.
- After a region is selected, you can purchase slots, create reservations, and assign a project to a reservation.
BigQuery Reservations for complex organizations
BigQuery Reservations is an organization-scoped resource. You purchase committed capacity centrally to be used across your entire organization. You can require individual departments or divisions to self-manage BigQuery Reservations, by purchasing committed capacity, distributing that capacity across the department or division, and being billed for that capacity.
You can use a distinct Google Cloud organization for each of your departments or divisions. In this scenario, you define an administration project for each organization and manage BigQuery Reservations for that organization from the administration project. There is no sharing of committed or idle capacity across disparate organizations.
Idle and unallocated slots are only shared across reservations created in the same administration project. If you use more than one administration project, slots are not shared across reservations in different administation projects.