Skip to content
RootSpend
Data warehouses2 min read

Idle Snowflake warehouses: how to find them and what they cost you

Snowflake bills a running warehouse whether it is busy or not. Here is how to find warehouses that sit idle, work out what that costs, and fix it safely.

By RootSpend Team. Updated

Snowflake charges for every second a warehouse is running, whether it's working or not. A warehouse that wakes up for a 20 second query and then stays up for ten more minutes bills you for those ten minutes too.

Why it adds up

Take a warehouse behind a BI tool. Dashboards refresh every few minutes during the day, and each query takes seconds. With auto suspend set to ten minutes, that warehouse basically never sleeps between 9 and 6.

Multiply that across a few warehouses and a few months, and idle time can be a real share of the bill.

How to find them

You need two numbers per warehouse: how long it was billed for, and how long it actually ran queries.

Billed time is in SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY. It gives you credits used per warehouse per hour.

Busy time is in SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY. Add up execution time per warehouse per hour.

Put them side by side. A warehouse that's billed every hour of the working day but only busy for a few minutes of each hour is your candidate.

Then check who uses it. A warehouse shared by a BI tool and a nightly ELT job may need different settings, or may need to become two warehouses.

The fix

For most batch and ELT warehouses, one line does it.

ALTER WAREHOUSE BI_WH SET AUTO_SUSPEND = 60;

Then watch the next week's cost for that warehouse in WAREHOUSE_METERING_HISTORY. If the credits drop and nobody complains, you're done.

Where RootSpend fits

RootSpend does this comparison for you every day. It splits your Snowflake bill per warehouse and per user, works out the idle share of each warehouse, and spreads that idle cost over the teams that use it. When a warehouse is idle for a big part of the day, you get a recommendation with the evidence and an estimated saving. It never changes the setting itself. You stay in control.

Find your idle warehouses

Join the waitlist and we will let you know as soon as you can connect Snowflake.

Join the waitlist

Frequently asked questions

It depends on the workload. Warehouses behind dashboards often benefit from staying up a few minutes so their cache stays warm. Batch and ELT warehouses can usually suspend after 60 seconds. Look at the gaps between queries before you change anything.

Sometimes, a little. A suspended warehouse has to resume, and it loses its local cache. For batch work you usually won't notice. For dashboards people click through all day, test it first.

Yes. RootSpend splits each day's compute per warehouse from WAREHOUSE_METERING_HISTORY and works out how much of it was idle. When a warehouse spends a big share of its time idle, it shows up as a recommendation with an estimated monthly saving.

AI costs2 min read

How to track OpenAI API costs per team, project and person

Your OpenAI invoice tells you how much you spent, not who spent it. Here is how to split every dollar of API spend between the teams and people behind it.

Read more
FinOps2 min read

Who pays for the shared warehouse? A practical guide to cost allocation

When one warehouse or one AI account serves many teams, someone still has to pay. Five ways to split the cost, the order to use them in, and how to keep totals honest.

Read more

Be first in when RootSpend opens

We are opening to a first group of teams soon. Join the waitlist, or book a demo and we will walk you through it on sample data.

Opening soon. The waitlist gets in first.