ThisCalculator

Everyday

How to Control Snowflake Compute Credits: FinOps Guide

Updated · Standard formula, shown below

How to Control Snowflake Compute Credits: FinOps Guide

This guide shows you how to control Snowflake compute credits, the main driver of your Snowflake bill. You’ll learn where credits go, how to set up guardrails, and how to use Snowflake’s own tools to cut waste—without slowing down your teams. This is a practical FinOps approach for finance, engineering, and platform teams who want predictable costs.

What You’ll Need

  • Access to Snowflake with ACCOUNTADMIN or a role that can view and alter warehouses and resource monitors.
  • Permission to create and manage resource monitors and warehouse parameters.
  • Basic familiarity with Snowflake’s web interface (Snowsight) or the ability to run SQL commands.
  • An understanding of your business’s peak usage times (optional but helpful).

Step-by-Step

  1. Understand how credits are consumed. Snowflake charges credits for compute time on virtual warehouses. Each warehouse runs on a T-shirt size (X-Small to XX-Large) and each size consumes credits at a different rate—for example, an X-Small uses 1 credit per hour, while a Large uses 8 credits per hour. Serverless features (like auto-scaling or Snowpipe) also consume credits, but warehouse compute is usually the biggest line item.
  2. Turn on auto-suspend and auto-resume. Edit each warehouse to set Auto-Suspend to 60 seconds (or less) and Auto-Resume to ON. This stops the warehouse when idle and starts it on the next query. This alone often cuts credit usage by 30-50%.
  3. Right-size your warehouses. Check the Warehouse Load History in Snowsight to see how long queries wait for resources. If a warehouse is rarely above 50% utilization, try a smaller size. Conversely, if queries are queuing, consider a larger size or multi-cluster. The goal is to match the warehouse size to the actual workload.
  4. Set up resource monitors. Go to Admin → Cost Management → Resource Monitors. Create a monitor for each warehouse or for the entire account. Set a credit quota (e.g., 100 credits/month) and choose an action when the quota is reached—like Suspend or Notify. Assign the monitor to the warehouse(s) so it enforces the limit.
  5. Use the credit usage views. Query SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY to see daily credit consumption per warehouse. Also check QUERY_HISTORY for long-running or repeated queries that could be optimized. Export this data to a dashboard for ongoing tracking.
  6. Implement a tagging and labeling policy. Use Snowflake’s Tagging feature to label warehouses (e.g., by team, project, or environment). Then use WAREHOUSE_METERING_HISTORY with tags to allocate costs to specific business units. This is key for FinOps accountability.
  7. Schedule warehouses for off-hours. If your team works 9-5, create a task that suspends non-critical warehouses at 7 PM and resumes them at 6 AM. You can do this with a simple SQL script and a scheduled task, or use a third-party tool. This prevents credits from burning overnight.
  8. Review and optimize queries. Use QUERY_HISTORY to find queries that scan large amounts of data or run frequently. Work with your data team to add filters, use clustering, or materialize intermediate results. Optimizing queries directly reduces the compute time needed.
  9. Set up alerts for unusual spikes. Use Snowflake’s Alerts feature to notify you when credit usage exceeds a threshold (e.g., 80% of your monthly budget). This gives you time to react before the resource monitor suspends a warehouse.
  10. Regularly review and adjust. Schedule a monthly FinOps review. Look at credit usage trends, compare against your budget, and adjust warehouse sizes, auto-suspend times, and resource monitor quotas based on actual needs.

Common Mistakes

  • Setting auto-suspend too high. A 10-minute timeout might seem safe, but if queries are bursty, the warehouse stays idle for most of that time, wasting credits. Use 60 seconds or less.
  • Ignoring multi-cluster warehouses. Auto-scaling can add clusters automatically, which multiplies credit consumption. Set a maximum cluster count and review if it’s necessary.
  • Not using resource monitors. Without them, a runaway query or a forgotten load job can burn through credits with no warning.
  • Over-provisioning for peak loads. If you only have a heavy load once a month, don’t keep a large warehouse running 24/7. Use a smaller warehouse and scale up only when needed.
  • Forgetting to suspend warehouses manually. Even with auto-suspend, if you have a warehouse that runs continuously for a long load, you might forget to turn it off. Set a reminder or use a scheduled task.

Tips

  • Start with the biggest warehouse first. Often, a few large warehouses consume most of the credits. Focus your optimization there.
  • Use the Credit Usage dashboard in Snowsight. It gives a visual overview of daily credits and trends, making it easier to spot anomalies.
  • Consider using Warehouse Scaling Policy set to Economy. This prioritizes saving credits over query performance, which is good for non-critical workloads.
  • Leverage Search Optimization service carefully. It improves query performance but consumes credits. Only enable it on tables that are frequently queried.
  • Use Snowflake’s Cost Management page. It provides a breakdown of credits by warehouse, user, and query, helping you pinpoint waste.

Troubleshooting

Credits still high after setting auto-suspend to 60 seconds? Check if any warehouse is set to Resume automatically and is being triggered by scheduled tasks or external tools. Also check if Snowpipe or Serverless Tasks are running frequently—these consume credits independently of warehouses.

Resource monitor suspends a warehouse but it resumes immediately? This happens if the warehouse has Auto-Resume enabled and a query comes in. To prevent this, set the resource monitor action to Suspend and Notify and also disable auto-resume for that warehouse during the suspension period, or use a task to keep it suspended.

Queries are slow after downsizing a warehouse? You may have downsized too aggressively. Check the Warehouse Load History to see if queries are queuing. If so, increase the warehouse size slightly or optimize the queries themselves.

Credit usage appears in the account but not in any warehouse? This could be from serverless features like Snowpipe, Query Acceleration, or Serverless Tasks. Use ACCOUNT_USAGE.METERING_HISTORY to see the breakdown by service.

Frequently Asked Questions

Q: How do I see how many credits a specific query used?
A: Use QUERY_HISTORY and look at the CREDITS_ATTRIBUTED column (if available) or calculate based on warehouse size and duration. Alternatively, use WAREHOUSE_METERING_HISTORY to see total warehouse credits.

Q: Can I set a monthly budget for a specific team?
A: Yes, create a resource monitor with a quota and assign it to that team’s warehouse. Also use tags to track usage per team.

Q: What is the difference between auto-suspend and auto-resume?
A: Auto-suspend stops the warehouse after a period of inactivity. Auto-resume starts it again when a query is submitted. Both are essential for cost control.

Q: Does Snowflake charge for data storage separately?
A: Yes, storage is billed separately from compute credits. This guide focuses on compute, but storage costs are also worth monitoring.

Q: How can I reduce credits for ad-hoc queries?
A: Use a smaller warehouse size for ad-hoc work, and set a short auto-suspend time. Also encourage users to use caching by running similar queries.

Q: Can I get a refund for unused credits?
A: No, Snowflake does not refund unused credits. The best approach is to prevent waste through monitoring and guardrails.

Related

Method: the standard formula for this calculation, rounded as each result states. See how the calculators work or report an error.