The Physical vs. Logical Storage Trap (why your warehouse bill crept up)

Chinmay R. · discovered a ₹65,000/mo storage bill for raw staging tables nobody queried🗄️ with a storage calculator and audit query, not a lecture

Published September 17, 2026

The 60-second version

  • Storage billing has two models: logical (uncompressed, cheaper per GB) and physical (compressed, pricier per GB but 7–12x smaller).
  • Raw marketing tables compress heavily. Toggling to physical storage cuts storage bills in half for typical JSON or event datasets.
  • The fix: set dataset storage billing model to PHYSICAL, add partition expiration to raw tables, and delete unpruned clones.
bottom line: compress the bytes, don’t rent raw space

Your data team audits BigQuery every quarter. They check expensive queries, enforce date partition filters, and pat themselves on the back for keeping query compute under ₹25,000 a month.

Then the monthly Google Cloud bill arrives, and the BigQuery total is ₹85,000.

The extra ₹60,000 was not compute. It was BigQuery active storage, quietly compounding as two years of raw ad event logs, uncompressed webhook staging tables, and forgotten test datasets sat idle in your warehouse. You spent weeks optimizing SQL execution while paying rent on dead, uncompressed disk space.


The silent half of the cloud invoice

What everyone watches

⚡ Query compute (Slots & Scans)

Loud, immediate, and visible. A bad query fails with an alert, or an analyst spots a 4 TB scan on a dashboard. It demands immediate attention.

  • Billed per byte scanned or slot-hour
  • Visible in query history immediately
  • Easy to blame on a single analyst
What quietly compounds

💾 Storage billing (Logical vs Physical)

Silent, permanent, and automated. Every daily ingestion pipeline adds gigabytes that never leave. Storage charges recur 24 hours a day, 365 days a year.

  • Billed every second tables exist
  • Invisible in query execution plans
  • Accumulates silently until finance reviews the bill

Compute costs stop when you close your laptop. Storage costs run every second of the year.

Until recently, BigQuery gave you no choice: you paid for logical storage — the uncompressed volume of your data. If an event row took 2 KB of JSON text, you paid for 2 KB, regardless of how efficiently Google's underlying filesystem stored it.

Now, BigQuery lets you choose between Logical Storage and Physical Storage. Making the wrong choice on an active dataset can easily double or triple your monthly storage invoice.


Logical vs physical: how Google measures a gigabyte

The two billing models have very different pricing and mechanics:

MetricLogical StoragePhysical Storage
What is measuredUncompressed bytes of your dataCompressed bytes written to disk
Active storage rate~$0.020 per GB / month~$0.040 per GB / month (2x higher base rate)
Long-term storage (>90 days idle)~$0.010 per GB / month~$0.020 per GB / month
Time travel & fail-safe storageFree (included in base price)Billed as physical bytes
Where it winsSmall, uncompressed or encrypted tablesLarge, repetitive marketing event datasets

At first glance, Physical Storage looks twice as expensive ($0.040 vs $0.020 per GB). don't stop at the rate card!

The catch is compression ratio. Tabular data with repetitive strings (like utm_source = 'facebook', event_name = 'page_view', or nested ad metadata) typically compresses at a ratio of 5:1 to 12:1 inside Google's Capacitor columnar format.

Paying 2x the rate on a table that is 8x smaller means a net 75% reduction in your storage bill.


The compression math across typical marketing tables

Here is an audit of a 15 TB marketing analytics warehouse holding GA4 event logs, Shopify webhooks, and Meta Ads spend tables.

Switching a 15 TB marketing warehouse to physical billing

GCP billing audit
Uncompressed logical data15,000 GB (15 TB)GA4 events + raw webhook payload history
Logical storage cost₹24,900 / mo15,000 GB × ~$0.020 / GB ($300/mo)
Average compression ratio7.8 : 1Columnar encoding on repetitive event fields
Physical compressed data1,923 GB (1.92 TB)Actual bytes occupied on Google disk arrays
Physical storage cost₹6,380 / mo1,923 GB × ~$0.040 / GB ($77/mo)
Monthly net savings₹18,520 / mo74% drop on storage line item
Annual cash saved₹2,22,240 / yrUnlocked with one ALTER SCHEMA command
The queries ran identically. No dashboards broke, no pipelines changed. Only the billing counter on Google's backend switched from measuring raw text to measuring compressed disk blocks.
LIVE · DRAG ITCalculate your storage savings
12
7.5
Logical Cost (at ₹1,660/TB)
₹19,920
Physical Cost (at ₹3,320/TB)
₹5,312
Monthly Difference
₹14,608
SWITCH TO PHYSICAL

At this compression ratio, Physical Storage is significantly cheaper. Switching your dataset will reduce your monthly storage bill.

live mathsestimates are fine — this is a what-if sandbox

Auditing your datasets and making the switch

Before you toggle any setting, check your actual compression ratio using BigQuery's INFORMATION_SCHEMA.

Audit Storage Sizes & Compression Ratios Across Your Tables

Show SQL

If your audit shows a compression ratio greater than 2.0 on your large tables, switching that dataset saves money immediately.

To switch an existing dataset to physical storage billing, run this one-line DDL:

Toggle Dataset to Physical Storage Billing

Show DDL

The 14-day lock: Once you change a dataset's storage billing model, BigQuery prevents you from changing it back for 14 days. Run the audit query above first to verify your compression ratio exceeds 2:1 before executing the alter statement.

BigQuery storage cleanup checklist run these quarterly →

  • Set partition expiration on raw event tables — tables like `ga4_events_raw` should automatically drop partitions older than 90 or 180 days.
  • Reduce Time Travel window on staging tables — change the default 7-day time travel to 2 days on transient ETL datasets to eliminate phantom physical storage.
  • Audit dead table clones — verify that development copies like `orders_backup_october` aren't silently accruing full storage fees.

Quick gut-check

One question. Get it and the whole post clicks. 30 seconds, no maths!

A raw events dataset has 10 TB of uncompressed logical data and 1.25 TB of compressed physical data. Which billing model is cheaper?


Frequently asked questions

Does switching to physical storage affect query speeds?

Not by a single millisecond. Query execution engines always read compressed data from disk regardless of how you are billed. The storage billing model is purely an accounting setting for how Google calculates your monthly invoice.

What about tables with heavy time travel?

When you choose Physical Storage, Google bills for time-travel storage (retained versions of altered or deleted rows) and fail-safe storage. If you run massive UPDATE or MERGE statements daily that rewrite 80% of a table, time-travel bytes can accumulate. For staging tables, reduce your time-travel window from 7 days to 2 days to keep costs low.

Can I set physical storage for only one table?

No. BigQuery applies the storage billing model at the dataset (schema) level, not per individual table. Move your high-compression event logs into their own dedicated dataset (e.g., events_warehouse) and toggle that dataset to PHYSICAL.


The summary

  • BigQuery bills for two distinct things: query compute (slots/scans) and storage (data at rest).
  • Logical storage charges for uncompressed raw bytes at ~$0.02/GB; physical storage charges for compressed disk footprint at ~$0.04/GB.
  • Marketing tables (GA4, Meta/Google ad logs, webhooks) contain repetitive text that compresses at ratios between 5:1 and 12:1.
  • Any dataset with a compression ratio above 2:1 saves significant money on Physical Storage.
  • Always check INFORMATION_SCHEMA.TABLE_STORAGE to confirm your compression ratio before executing ALTER SCHEMA.

Takeaways for your next report

  • Storage costs accumulate 24/7 and can quietly rival query compute on long-running warehouses.
  • Physical storage is twice the unit rate ($0.04 vs $0.02) but charges on compressed bytes.
  • Marketing event tables regularly compress 7–10x, turning physical billing into a 60–75% cost reduction.
  • Audit compression ratios in SQL and toggle datasets with a simple ALTER SCHEMA command.
stick this on your Monday report
Free tool

BigQuery Cost Estimator

Estimate what a query will cost before you run it — from validator bytes, with a table-scan simulator and a paste-your-query cost audit. On-demand BigQuery pricing, made concrete.

Chinmay Raibagkar

About author →

Founder of DataLens AI. He helps non-technical teams read their ad and database numbers with confidence — which number to trust, what to do next, and what to ignore.