BigQuery Slot Reservations 2026: Migrera från on-demand och spara 50 %
Så migrerar du från BigQuery on-demand till slotreservationer 2026 och sparar 40–70 %. Break-even, Terraform-kod, autoskalning och fallgropar från en Monzo-migrering.
BigQuery-slotreservationer sänker analyskostnaderna med 40–70 % jämfört med on-demand-fakturering när dina frågor scannar mer än cirka 400 TB per månad, eftersom du betalar för garanterad beräkningskapacitet i stället för varje enskild byte som läses. På Monzo migrerade jag hela vår analysstack från on-demand till Enterprise-editionen med autoskalande reservationer och kapade GCP-fakturan med 38 % under första kvartalet. Den här guiden beskriver exakt hur du planerar, mäter och genomför samma migrering under 2026, inklusive fallgroparna som kostade oss tre veckor och en obehaglig incidentrapport.
Priset per slot-timme i Enterprise-editionen ligger på 0,06 USD i us-central1 (2026), vilket motsvarar ungefär 44 USD per slot och månad om reservationen körs kontinuerligt.
Break-even mot on-demand (6,25 USD per TB) inträffar när du regelbundet scannar mer än cirka 400 TB per månad. Under detta tröskelvärde är on-demand fortfarande billigare.
Sedan mars 2023 heter produkten "BigQuery Editions" (Standard, Enterprise, Enterprise Plus). De gamla flex slots och Flat-rate-reservationerna finns inte längre kvar för nya kunder.
Autoskalning med en baseline på 0 slots och maxtak per reservation är standardmönstret för att undvika betalning för idle-kapacitet.
Ett års commitment ger 20 % rabatt, tre år ger 40 %. Kombinera baseline-commitment med autoskalande overflow för att maximera besparingen.
Reservationsassignments styr vilken workload som drar från vilken pool. Separera ETL, ad-hoc och BI Engine så att en 500 GB JOIN inte sväljer hela dashboarden.
Vad är BigQuery-slotreservationer?
En BigQuery-slot är en virtuell CPU som utför en enhet av SQL-arbete, ungefär som en tråd i en distribuerad shuffle. När du kör en fråga med on-demand-fakturering får du en dynamisk pool på upp till 2000 slots per projekt, men du betalar per byte som scannas (6,25 USD per TB i us-central1 sedan juli 2023). Med en reservation köper du i stället en fast pool av slots (säg 500) som är tillgänglig 24/7, och kostnaden är helt frikopplad från datavolymen.
Sedan Google Cloud lanserade BigQuery Editions i mars 2023 finns det tre nivåer: Standard (endast pay-as-you-go slots, inga materialiserade view-refresher), Enterprise (fullständig funktionsuppsättning, standardvalet för de flesta) och Enterprise Plus (CMEK, cross-region replication, prisad högst). Det gamla "Flat-rate"-erbjudandet och de månatliga flex slots är utfasade sedan 5 juli 2023. Försök inte hitta dem i konsolen, de finns inte kvar för nya kunder.
Två mekanismer avgör hur mycket du faktiskt betalar: baseline (garanterad kapacitet du alltid betalar för) och max reservation size (taket för autoskalning). Skillnaden mellan dessa är overflow, alltså extra slots som skalas upp per sekund när frågor köar och som faktureras endast för den tid de faktiskt används.
BigQuery Editions vs on-demand: prisjämförelse 2026
Egenskap
On-demand
Standard Edition
Enterprise Edition
Enterprise Plus
Fakturering
Per TB scannad
Per slot-timme
Per slot-timme
Per slot-timme
Pris (us-central1, 2026)
6,25 USD/TB
0,04 USD/slot-h
0,06 USD/slot-h
0,10 USD/slot-h
Max samtidiga slots
2 000 (mjukt tak)
1 600
Ingen gräns
Ingen gräns
Materialiserade vyer
Ja
Nej
Ja
Ja
BI Engine
Ja
Nej
Ja
Ja
CMEK
Ja
Ja
Ja
Ja
Cross-region replication
Nej
Nej
Nej
Ja
1-års commitment-rabatt
N/A
20 %
20 %
20 %
3-års commitment-rabatt
N/A
40 %
40 %
40 %
För en enkel jämförelse: en Enterprise-reservation på 100 slots som körs 24/7 kostar 0,06 × 100 × 730 = 4 380 USD per månad. För att matcha den kostnaden i on-demand skulle du behöva scanna 4 380 ÷ 6,25 = 701 TB. Om ditt team scannar mindre än så, och du inte behöver de förutsägbara latens-egenskaperna som reservationer ger, är on-demand fortfarande det billigare valet.
Den detaljen glömmer många FinOps-guider bort. En reservation är inte automatiskt billigare. Den är billigare när workload-mönstret matchar, och det är just den analysen som gör skillnaden mellan att spara 40 % och att av misstag bränna 2 000 USD i månaden på idle slots.
När lönar sig slotreservationer?
Under mitt arbete med kunders GCP-fakturor har jag sett tre profiler där reservationer nästan alltid lönar sig:
Predictable ETL-workloads. Om dina Dataform- eller Dagster-pipelines kör i stort sett samma frågor varje natt är slot-användningen förutsägbar, och en baseline-reservation kombinerad med commitment kan halvera kostnaden direkt.
Höga scannvolymer. Alla team som konsekvent processar mer än ~400 TB per månad når break-even mot on-demand. På Monzo var vi där redan i utvecklingsmiljön; produktion låg på 2,3 PB per månad, vilket motsvarade cirka 14 000 USD bara i on-demand-kostnader.
Latensskänsliga dashboards. On-demand ger dig ingen SLA på tillgänglig kapacitet. Om din CEO öppnar Looker och det inte finns lediga slots i poolen sätts frågan i kö. En liten dedikerad reservation för BI Engine löser detta för 300–500 USD i månaden.
Mät din nuvarande slot-användning
Ärligt talat är det här steget viktigare än själva Terraform-koden. Innan du skapar en enda reservation måste du veta hur många slots dina befintliga workloads faktiskt använder. Den enda tillförlitliga källan är INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION-vyn, inte fakturaraderna och inte konsolens "Slot usage"-widget (som avrundar till 15-minutersintervall och döljer spikes).
-- Genomsnittlig och peak slot-anvandning per timme, senaste 30 dagarna
SELECT
TIMESTAMP_TRUNC(creation_time, HOUR) AS hour,
SUM(total_slot_ms) / (1000 * 60 * 60) AS avg_slots_used,
APPROX_QUANTILES(
total_slot_ms / TIMESTAMP_DIFF(end_time, start_time, MILLISECOND),
100
)[OFFSET(95)] AS p95_slots_per_query,
COUNT(*) AS query_count,
SUM(total_bytes_billed) / POW(1024, 4) AS tb_scanned
FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION
WHERE creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
AND job_type = 'QUERY'
AND state = 'DONE'
AND error_result IS NULL
GROUP BY hour
ORDER BY hour;
Plotta resultatet i Looker Studio eller en Jupyter-notebook. Det du letar efter är två siffror: P50 slot-användning per timme (blir din baseline) och P95 slot-användning per timme (blir ditt autoskalnings-tak). På Monzo var dessa 180 respektive 720 slots. Vi köpte 200 baseline med 3-års commitment och lät autoskalning täcka resten upp till 1 000.
Jämför sedan mot fakturan. Om din nuvarande on-demand-kostnad är X USD per månad och den beräknade reservationskostnaden är Y USD, gå bara vidare om Y ≤ 0,75 × X. Under 25 % besparing är risken för feluppskattning för hög, och då är det bättre att optimera frågorna i stället, vilket jag skriver mer om i vår guide till GCP Committed Use Discounts 2026.
Skapa din första reservation steg för steg
Reservationer skapas via BigQuery Reservation API, bq-verktyget eller Terraform. Jag rekommenderar Terraform från dag ett. Reservationer är dyra att felkonfigurera, och en pull request är billigare att granska än ett faktureringsmeddelande i slutet av månaden.
# main.tf - En Enterprise-reservation med 200 slots baseline och autoskalning upp till 1000
resource "google_bigquery_reservation" "analytics_prod" {
name = "analytics-prod"
project = "my-org-billing"
location = "US"
slot_capacity = 200 # baseline (garanterad kapacitet)
edition = "ENTERPRISE"
ignore_idle_slots = false # dela idle-slots med andra reservationer
autoscale {
max_slots = 1000 # autoskalningstaket
}
}
# Bind produktionsprojektet till reservationen
resource "google_bigquery_reservation_assignment" "prod_query" {
assignee = "projects/my-org-prod-analytics"
job_type = "QUERY"
reservation = google_bigquery_reservation.analytics_prod.id
}
# 3-ars commitment for 40 % rabatt pa baseline
resource "google_bigquery_capacity_commitment" "prod_commitment" {
capacity_commitment_id = "prod-3yr"
location = "US"
slot_count = 200
plan = "THREE_YEAR"
edition = "ENTERPRISE"
}
Kör terraform plan och läs outputen noga. Commitments är oåterkalleliga. Du kan inte annullera ett 3-års commitment när det är signerat, bara låta det löpa ut. Ett tips: skapa alltid commitment i ett separat billing-projekt, inte i workload-projektet. Det gör att du kan flytta reservationen mellan projekt utan att röra commitment-bindningen.
Autoskalning, baseline och commitments
Sedan slutet av 2023 stöder Enterprise och Enterprise Plus 0-baseline autoskalning. Du kan ha en reservation med slot_capacity = 0 som skalar upp till taket enbart när frågor kommer. Detta är kraftfullt för ad-hoc-workloads där du inte vill betala för idle-kapacitet men fortfarande vill undvika on-demand-priset per byte.
Så här ser prisstacken ut:
Baseline utan commitment: 0,06 USD per slot-timme (Enterprise, us-central1)
Baseline med 1-års commitment: 0,048 USD per slot-timme (20 % rabatt)
Baseline med 3-års commitment: 0,036 USD per slot-timme (40 % rabatt)
Autoskalning (overflow-slots): 0,06 USD per slot-timme, alltid till listpris (inga commitment-rabatter)
Den sista punkten är kritisk. Många team köper ett stort commitment i tron att autoskalning också får rabatten. Det gör den inte. Om du regelbundet drar 400 slots men bara har 100 i commitment, betalar du 300 slots × 0,06 USD × 730 h = 13 140 USD per månad på full pris för overflow. Justera din baseline så att den täcker minst P50-användningen; låt autoskalning bara hantera oregelbundna toppar.
En vanlig felkonfiguration jag rättar hos kunder är en enda stor reservation som alla projekt drar från. Det låter effektivt, men vad som händer är att en enskild data scientist som råkar köra en SELECT * mot ett 800 GB event-table äter upp hela poolen, och plötsligt hänger CEO:ns Looker-dashboard.
Lösningen är reservation assignments. Du delar in dina slots i logiskt separerade pooler och binder varje projekt till en specifik pool baserat på job_type (QUERY, PIPELINE eller ML). Ett vanligt setup för ett medelstort dataetam:
# Tre pooler for olika workload-klasser
resource "google_bigquery_reservation" "etl" {
name = "etl-nightly"
slot_capacity = 400
edition = "ENTERPRISE"
autoscale { max_slots = 800 }
}
resource "google_bigquery_reservation" "adhoc" {
name = "analyst-adhoc"
slot_capacity = 0 # 0-baseline, betala bara vid anvandning
edition = "ENTERPRISE"
autoscale { max_slots = 500 }
}
resource "google_bigquery_reservation" "bi" {
name = "looker-bi"
slot_capacity = 100
edition = "ENTERPRISE"
ignore_idle_slots = true # aldrig dela ut till andra pooler
autoscale { max_slots = 200 }
}
Fördelen: en okontrollerad analyst-fråga kan max ta 500 slots ur adhoc-poolen. Looker's BI Engine har 100 dedikerade slots som ingen kan ta i anspråk, oavsett hur mycket ETL-jobben tjatar. Detta är samma mönster jag också beskriver i vår guide till AWS cost allocation tags över multi-account. Separera först, optimera sedan.
Prioritera kritiska jobb med job priority
Under 2025 lanserade Google QUERY_JOB_PRIORITY-parametern som låter dig märka en fråga som INTERACTIVE eller BATCH. Batch-jobb köas tills baseline-slots frigörs; interactive får overflow-behandling. Kombinera detta med reservationsassignments, och du får både priser och latenser under kontroll. Det ersätter det gamla mönstret där man tvingades skapa fem olika reservationer bara för att hantera prioritet.
Fallgroparna jag träffade på under Monzo-migreringen
Tre saker som kostade oss tid och pengar under den första migreringen. Spara dig själv genom att undvika dem.
1. Vi glömde att materialiserade vyers refresher är slot-baserade. När vi flyttade produktion till Enterprise Edition slutade våra materialiserade vyer att uppdateras, eftersom refresher-jobben kördes i ett projekt som saknade reservation-assignment. Priset i on-demand var noll (de har egen intern budget), men prestandan halverades. Lösning: bind ALLA projekt som äger MV:er till en reservation, även små admin-projekt.
2. BI Engine dubbelfakturering. Vi hade BI Engine-kapacitet reserverad utöver Enterprise Edition-slots och betalade dubbelt i en månad innan finance flaggade det. Sedan mars 2024 ingår BI Engine i Enterprise Edition, så ta bort separata BI Engine-reservationer.
3. Idle slots delades inte som förväntat. Vi hade satt ignore_idle_slots = true på alla reservationer "för säkerhets skull" och undrade varför overflow-priset var så högt. Sätt det till false överallt utom där du absolut måste garantera dedikerad kapacitet (typiskt bara BI/dashboards).
Uppföljning efter migrering: månadsvis review
Reservationer är inte "set and forget". På Monzo körde vi en enkel månadsrutin: varje första måndag i månaden granskade vi INFORMATION_SCHEMA.RESERVATION_CHANGES för att se om baseline behövde justeras, och läste en Looker-dashboard som visade utnyttjande per reservation. Om en reservation låg under 40 % utnyttjande tre månader i rad skalade vi ner baseline med 20 %; om overflow överskred 30 % av total kostnad skalade vi upp. Fem minuter i månaden, tusentals dollar i skillnad över ett år.
Vanliga frågor
Hur mycket kostar en BigQuery-slot per timme 2026?
I us-central1 (2026) kostar Standard Edition 0,04 USD per slot-timme, Enterprise 0,06 USD och Enterprise Plus 0,10 USD. Med ett 3-års commitment sjunker priset till 0,024 / 0,036 / 0,060 USD respektive. Priserna varierar per region, och europe-west4 ligger cirka 10 % högre än us-central1.
Vad är skillnaden mellan BigQuery Editions och on-demand?
On-demand fakturerar per byte som scannas (6,25 USD/TB) utan garanterad kapacitet. Editions fakturerar per slot-timme med reserverad eller autoskalande kapacitet. Editions är billigare vid höga scanningsvolymer (över ~400 TB/månad) eller när du behöver förutsägbar latens; on-demand är enklare och billigare för sporadiska workloads.
Kan jag blanda on-demand och slotreservationer i samma projekt?
Ja. Projekt utan reservation-assignment faller automatiskt tillbaka till on-demand-fakturering. Många team använder reservationer för produktion och ETL, men låter development- och sandbox-projekten stanna på on-demand så länge deras volymer är låga.
Vad hände med BigQuery flex slots och Flat-rate-reservationer?
Både flex slots och Flat-rate-modellen utfasades den 5 juli 2023 när Editions lanserades. Motsvarigheten till flex slots är idag Enterprise Edition utan commitment (pay-as-you-go slot-timmar), och du kan skala ner till 0 baseline om du inte vill ha garanterad kapacitet.
Får commitment-rabatten också avdrag på autoskalning?
Nej. Commitments (1 år eller 3 år) rabatterar endast baseline-slots, alltså den kapacitet du garanterat betalar för oavsett användning. Overflow-slots från autoskalaren faktureras alltid till listpris. Detta är den vanligaste feluppskattningen jag ser i FinOps-planer.
Marcus ran the cloud platform team at Monzo for three years, where he cut the bank's GCP spend by 38% after migrating BigQuery workloads from on-demand to slot reservations and rewriting a Dataflow job that was quietly burning $14k/month on idle workers. Before Monzo he was a site reliability engineer at Zalando in Berlin, working on Kubernetes capacity planning across 1,400+ namespaces.
He is GCP Professional Cloud Architect certified, CKA certified, and has nine years of operational experience across GKE, EKS, and a brief, regrettable stint with AKS in 2019. He maintains a small open-source tool called `kube-waste` that flags overprovisioned requests/limits across a cluster.
Marcus writes about Kubernetes cost attribution, BigQuery query optimization, and the specific kind of organizational pain that shows up when finance and engineering both think they own the cloud bill. Based in London.
Så väljer du mellan resursbaserade CUD och Flex CUD i Google Cloud 2026. Konkret räkneexempel, direct discount-modellen, CUD-delning och jämförelse mot AWS och Azure.