How Snowflake Credits Work
Snowflake bills primarily through credits, an abstract unit that converts to a dollar rate depending on your cloud provider, region, and edition (Standard, Enterprise, Business Critical). Virtual warehouse compute is the dominant cost driver for most accounts: a warehouse consumes credits per second it's running (with a 60-second minimum billing increment each time it resumes from suspension), and credit consumption scales linearly with warehouse size — an X-Small warehouse burns 1 credit per hour of continuous runtime, a Small burns 2, a Medium burns 4, and so on, doubling at each size up to 6X-Large. Storage is billed separately, per average terabyte per month, and cloud services compute (the layer that handles query parsing, metadata, and optimization) is only billed for the portion exceeding 10% of your daily compute spend, so light usage is effectively free.
Cricket analogy: Like renting a stadium's floodlights by the hour at a rate that doubles for each larger bank of lights switched on, mirroring how warehouse credit burn doubles from X-Small to Small to Medium.
Monitoring and Controlling Spend
Snowflake provides several native tools for cost visibility and control. Resource monitors let you set credit quotas at the account or warehouse-group level over a defined interval, with configurable actions when thresholds are crossed — NOTIFY to alert administrators, or SUSPEND / SUSPEND_IMMEDIATE to actually stop warehouses from consuming further credits once a limit is hit. Warehouses also have an AUTO_SUSPEND setting (commonly set to 60-300 seconds of inactivity) that automatically pauses compute when idle, since you're billed for wall-clock running time regardless of whether queries are actively executing, and AUTO_RESUME automatically wakes a warehouse the instant a new query arrives. The ACCOUNT_USAGE and ORGANIZATION_USAGE schemas expose views like WAREHOUSE_METERING_HISTORY and QUERY_HISTORY for granular, queryable cost attribution down to the warehouse, user, or query level.
Cricket analogy: Like a franchise setting a hard salary cap that automatically blocks further player signings once the spending threshold is crossed, similar to a resource monitor's SUSPEND action on a warehouse.
-- Configure a warehouse to suspend quickly when idle and resume automatically
ALTER WAREHOUSE analytics_wh SET
AUTO_SUSPEND = 60
AUTO_RESUME = TRUE
WAREHOUSE_SIZE = 'MEDIUM';
-- Create a resource monitor that suspends warehouses once 500 credits are used this month
CREATE OR REPLACE RESOURCE MONITOR monthly_cap
WITH CREDIT_QUOTA = 500
FREQUENCY = MONTHLY
START_TIMESTAMP = IMMEDIATELY
TRIGGERS
ON 80 PERCENT DO NOTIFY
ON 100 PERCENT DO SUSPEND
ON 110 PERCENT DO SUSPEND_IMMEDIATE;
ALTER WAREHOUSE analytics_wh SET RESOURCE_MONITOR = monthly_cap;
-- Attribute credit consumption by warehouse over the last 7 days
SELECT warehouse_name, SUM(credits_used) AS total_credits
FROM SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY
WHERE start_time >= DATEADD('day', -7, CURRENT_TIMESTAMP())
GROUP BY warehouse_name
ORDER BY total_credits DESC;Multi-cluster warehouses can automatically scale out additional clusters of the same size to handle queuing under concurrent load, and scale back in when demand drops — this controls query queueing latency but adds proportionally more credit consumption during scale-out periods, so pair it with a resource monitor if cost predictability matters.
Because billing is per-second with a 60-second minimum per warehouse resume, a pattern of many small, frequent queries that repeatedly wake a suspended warehouse can cost more than leaving it running, or than batching queries together. Review AUTO_SUSPEND settings against your actual query cadence rather than using a one-size-fits-all default.
- Snowflake bills primarily in credits, with virtual warehouse compute typically the dominant cost driver.
- Warehouse credit consumption doubles per size step (X-Small=1/hr, Small=2/hr, Medium=4/hr, etc.) and bills per second with a 60-second minimum per resume.
- Storage is billed separately per average terabyte per month; cloud services compute is only billed above 10% of daily compute spend.
- Resource monitors set credit quotas with NOTIFY, SUSPEND, or SUSPEND_IMMEDIATE actions at defined thresholds.
- AUTO_SUSPEND and AUTO_RESUME automatically pause idle warehouses and wake them on new queries to avoid paying for idle time.
- ACCOUNT_USAGE views like WAREHOUSE_METERING_HISTORY and QUERY_HISTORY give granular, queryable cost attribution.
- Multi-cluster warehouses trade cost predictability for reduced query queueing under concurrent load.
Practice what you learned
1. What is the dominant cost driver for most Snowflake accounts?
2. How does credit consumption scale as warehouse size increases from X-Small to Small to Medium?
3. What does a resource monitor's SUSPEND_IMMEDIATE trigger action do?
4. What does AUTO_SUSPEND control on a warehouse?
5. Which ACCOUNT_USAGE view would you query to see credit consumption broken down by warehouse over time?
Was this page helpful?
You May Also Like
Tasks and Streams
Understand how Snowflake Streams capture change data and how Tasks schedule and chain SQL automation, including the common stream-and-task CDC pattern.
Integrating Snowflake with BI Tools
Covers how BI tools like Tableau, Power BI, and Looker connect to Snowflake, and the performance and governance patterns that keep dashboards fast and secure.
Related Reading
Related Study Notes in Programming
Browse all study notesApache Spark Study Notes
Programming · 30 topics
ProgrammingApache Flink Study Notes
Programming · 30 topics
ProgrammingHadoop Study Notes
Programming · 30 topics
ProgrammingApache Airflow Study Notes
Programming · 30 topics
Programmingdbt (Data Build Tool) Study Notes
Programming · 30 topics
ProgrammingPowerShell Study Notes
Programming · 30 topics