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.
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.