The Hidden Costs of Always-On Snowflake Warehouses (And How to Fix Them)
Your warehouses might be burning money right now — while no one is watching.
Here's a scenario that plays out in almost every data team we talk to: it's 2am, nobody is running queries, and your Snowflake warehouses are humming along, consuming credits, costing you money. By the time someone notices, hundreds or thousands of dollars have evaporated into idle compute.
The frustrating part isn't that it happened once. It's that it keeps happening, invisibly, because the monitoring isn't there. Snowflake doesn't make it easy to see idle costs in real time — and auto-suspend, while powerful, is rarely configured correctly.
The math behind idle warehouses
Let's run some numbers. Snowflake pricing varies by region and contract, but a common reference point for on-demand compute is roughly $3–$4 per credit. An X-Large warehouse consumes 16 credits per hour.
Cost Example
That's over $10K per month, per warehouse, just from idle time. Most teams have multiple warehouses — separate ones for ETL, BI, development, and ad-hoc queries. If each of them has similar idle patterns, you're looking at $30K–$50K per month in pure waste before you've even started optimizing query efficiency.
Three common patterns we see
1. ETL warehouses that don't auto-suspend correctly
ETL jobs often run in bursts — heavy load for 20 minutes, then nothing for hours. The problem is that many ETL orchestration tools (Airflow, dbt Cloud, Fivetran) hold warehouse connections open between tasks. Snowflake's auto-suspend timer doesn't kick in until the connection is actually released, which means a warehouse that thinks it's idle is still counting credits.
The fix sounds simple — set a short auto-suspend time, like 60 seconds — but doing it naively causes constant warehouse cold-start overhead. The right answer is to instrument your ETL patterns and set per-warehouse suspend policies based on actual usage rhythms.
2. Oversized BI/reporting warehouses
A common pattern: someone runs a slow report, complains, and the warehouse gets resized from Medium to X-Large. The report runs faster. Nobody revisits the size. Six months later, you're running a 16-credit/hour warehouse for queries that a Small warehouse could handle at one-eighth the cost.
When we audit warehouses, we typically find that 60–70% of BI queries execute in under 5 seconds even on a Small warehouse — the bottleneck is query design, not compute size. Right-sizing based on actual query patterns (not anecdotal performance complaints) routinely cuts BI warehouse costs by 50–75%.
3. Development warehouses running 24/7
Dev warehouses are the quiet killers. Engineers spin them up, do their work, and rarely think about them again. Unlike production warehouses that have usage patterns you can analyze, dev warehouses often just sit there consuming credits indefinitely. We've audited teams where dev warehouses accounted for 20–30% of total spend — matching or exceeding production compute costs.
How to fix it
The good news: most of this waste is fixable in a week with the right approach.
Audit your auto-suspend settings first. For every warehouse, check the current auto-suspend value. In Snowflake, run SHOW WAREHOUSES; and look at the auto_suspend column. If any warehouse has auto-suspend set to more than 5 minutes (300 seconds) and isn't a streaming use case, that's a candidate for tuning.
Right-size based on query patterns, not gut feel. Pull query execution times and bytes scanned from QUERY_HISTORY and check what percentage of queries would complete in under 30 seconds on a smaller warehouse. This data usually reveals clear over-provisioning.
Implement resource monitors and budget alerts. Snowflake's resource monitors let you set credit quotas per warehouse and trigger alerts or automatic suspension when thresholds are hit. This is a hard stop on runaway spend that every team should have in place.
Schedule non-production warehouses. For dev and staging warehouses, implement automatic suspension schedules — suspend everything outside of business hours. A warehouse that's on for 10 hours a day instead of 24 costs 58% less.
Monitor continuously, not retroactively. Snowflake's ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY has a 45-minute delay. By the time you see the spike, the money is already gone. Real-time monitoring — watching current warehouse state and catching idle patterns as they form — is what prevents the waste, not just reports it.
Know exactly what your idle warehouses cost you.
PrismCost connects to your Snowflake account, identifies idle warehouse patterns, and shows you the dollar amount — broken down by warehouse, team, and time window. Most teams find $20K–$60K in recoverable idle spend within the first audit.
Get a free cost audit →