Keebo | Snowflake Cost Savings: 5 Challenges & 3 Proven Solutions (for 2025)

Snowflake Cost Savings: 5 Challenges & 3 Proven Solutions (for 2025)

No one wakes up in the morning and says: Today, I want to overspend on Snowflake and waste tens of thousands of dollars. But Snowflake overspend is still very common, and it’s not unheard of for companies to spend 200% or 300% more than expected on the platform. So for most organizations, Snowflake cost savings is a top priority in 2025.

But traditional approaches to Snowflake cost savings often involve performance degradation, SLA violations, and a poor user experience. This puts most data teams in a bind, forcing them to choose among a set of difficult tradeoffs. 

In this article, we’ll show you how to avoid that tradeoff. We’ll walk through the five most common Snowflake cost savings challenges and three proven strategies to avoid them. 

Top reasons to prioritize Snowflake cost savings

Why save on Snowflake? Often data teams, especially in enterprise organizations, are so removed from the realities of Snowflake overspending that they don’t feel the actual impact. 

And yes, the person who cares the most about Snowflake cost savings is almost always your CFO or controller. CIOs and other senior leadership also care. But as a DBA or engineer, you should also care about costs getting out of control: 

  • Get more value out of the credits you’ve already allocated at capacity
  • Free up resources for more value-generating activities—e.g. building pipelines and data products
  • Maintain or improve performance without cutting costs (due to Snowflake’s scalable architecture)
  • Handle more variable workloads and service more complex client needs
  • Contribute to top-line organizational growth without eating too heavily into profitability
  • Immediate savings will earn your department goodwill among leadership and finance teams—and avoid too many uncomfortable conversations

The more you can intentionally save on Snowflake, the more value your data team can bring to the overall organization. 

Navigating Snowflake’s complex pricing structure

One of the biggest challenges to saving on Snowflake is its complex pricing structure. There are so many variables that play into your monthly Snowflake bill that figuring out the best place to reduce impact is often easier said than done. 

So let’s break down the three major elements that factor into your Snowflake costs: 

  • Storage costs are calculated based on a flat rate per terabyte (TB) of both compressed and uncompressed data. These data can be used for bulk unloading or loading, historical data maintained for File-safe, and database tables.
  • Compute costs are incurred any time you consume Snowflake credits—performing queries, loading data, or other DML operations. These fall into three categories: virtual warehouses, serverless, and cloud services. 
  • Data transfer costs are incurred when you transfer data from a Snowflake account to a different region, cloud provider, or both.

There are some additional costs for other services, including Snowpark Container Services and their Document AI and Snowflake Cortex offerings. These are priced separately, and we cover them in our comprehensive Snowflake pricing guide

Overall, the biggest source of spend—and the area with the greatest savings potential—is compute costs. Specifically, virtual warehouses. Warehouses vary in size based on the resources provisioned to them. Thankfully, their sizing schema is pretty easy to follow: 

Warehouse sizeCredits per hour
X-small1
Small2
Medium4
Large8
X-large16
2X-large32
3X-large64
4X-large128
5X-large256
6X-large512

Each warehouse consumes a set number of credits per hour. Credits are the virtual “currency” used to measure and charge for compute resources. In most cases, they correspond linearly to provisioned resources—double the credits means double the compute. 

So how much do Snowflake credits cost? Well, that’s also complicated. There are two factors that determine how much you spend per credit:

  • Snowflake Edition. Snowflake prices credits on four tiers—called “Editions”—each with their own unique features. These are baked into your annual contract and can’t be changed until it’s time to renew. 
  • On-demand vs. Capacity. There are two ways to provision Snowflake credits: On-demand (pay-as-you-go) or Capacity (pre-paid). Capacity is cheaper per credit, but you still have to pay for any unused credits you’ve provisioned. 

Biggest challenges to saving on Snowflake

Of course, if you’re an avid Snowflake user, you know that saving on Snowflake is easier said than done. Not only is the pricing structure complex and tough to navigate, but many of the native “savings” features make it difficult to actually maximize your cost savings. 

As a result, many users find themselves bumping up against one of these all-too-common Snowflake cost savings challenges. 

1. Cost savings vs. performance tradeoff

Because the core of Snowflake’s pricing model is based on usage (which, in turn, correlates to compute resources), there’s often a tradeoff between cost savings and performance. 

Consider Snowflake’s resource monitor feature. It has a straightforward functionality: the user sets a limit on credit spend. Once you consume a set percentage of those credits, Snowflake either sends an alert that you’re close to exceeding that limit, or will automatically shut off the warehouse. 

If you depend on resource monitors exclusively for Snowflake cost savings, the only tool in your arsenal will be to shut off warehouses and dial back performance. That’s obviously not a feasible option for most organizations, so in reality you just don’t optimize at all. 

Whether we’re talking about user demands or service-level agreements, when the tradeoff is between cost savings and performance, the latter almost always wins. So it’s important to find a cost optimization solution that doesn’t degrade performance. 

2. Manual optimization shortcomings

Another challenge with most Snowflake cost savings solutions is that they require manual action in order to operate. That means your ability to save is dependent on the size and speed of your team. 

Manual optimization, however, has a number of challenges:

  • Snowflake demands are never static—user patterns shift and evolve minutes at at time
  • There are thousands of decisions—warehouse sizing, query routing, etc.—that need to be made on a daily (or even hourly) basis
  • Even if your team could keep up, they’re never on 24/7, which means there’s no one to optimize Snowflake while you sleep

That’s why you need an autonomous solution, like Snowflake, that can implement cost saving measures 24/7, even while your team is asleep. Otherwise, you’ll leave money on the table. 

3. Inefficient queries

Poorly written SQL queries are another common cause of Snowflake cost and performance inefficiencies, as these queries consume more compute resources and typically have a higher latency. 

However, most teams are limited in their ability to fix inefficient queries. For manually written queries, you can always work with your team to enforce best practices. But the majority of queries that Snowflake handles are automatically generated by other applications (e.g. Looker). There’s no way to go in and fix those. 

4. Lack of observability into Snowflake 

Because of the complexity of Snowflake’s pricing model, not to mention the lack of observability solutions, it can be difficult to determine where your spend is going. This makes it challenging if not impossible to step in and optimize. 

To find the best opportunities to optimize Snowflake, you need a solution that provides:

  • Real-time, continuous insights into the health of queries, warehouses, data, and storage
  • Actionable cost saving recommendations to find the activities that will have the greatest positive impact on performance
  • Multidimensional optimization options so you can control where, when, and how you optimize—i.e. manual, human-approved, and fully autonomous 

5. Reactive vs. proactive solutions

Most of the available solutions for Snowflake cost savings are reactive vs. proactive. Resource monitors, again, are the perfect example of this. You don’t know whether you’ve exceeded your allotted credits until after the fact. By then, you can’t unspend the money. 

To save on Snowflake, you need a proactive approach that can predict and respond to potential high-spend events (like an influx of queries). That way, you can take action to correct an inefficiency before the resources are consumed. 

Top solutions for saving on Snowflake without sacrificing performance

Although it may seem that Snowflake savings and performance are inversely correlated, that’s actually not the case for the majority of users. Few users set up their instances in the most efficient way from the beginning, leading to a number of unnecessary losses:

  • Warehouses operate at the wrong size for the associated resource demands, burning credits faster than needed
  • Queries (both manually written and auto-generated) are written inefficiently, consuming more resources than necessary to retrieve the required information
  • Workloads are unbalanced, causing some warehouses to be over-utilized while others are under-utilized
  • Lack of observability solutions that surface the insights necessary to make cost & performance optimization decisions

These inefficiencies mean there are a number of ways you can cut down your Snowflake bill without a subsequent dip in performance. Here are some of the top Snowflake cost-saving measures you can start to implement. 

Warehouse optimization

A major source of Snowflake overspending is poor warehouse configuration that results in unbalanced workloads:

  • Warehouses are too big and consume too many credits to run simple queries
  • Warehouses are too small and take forever to run complex queries (which can burn through more credits than if you upsized the warehouse and ran the query faster)
  • Warehouses take too long to suspend, burning credits when you don’t have any workload running 

That’s where warehouse optimization comes in. By controlling warehouse size and suspend, you can only consume resources when you need them. For example: 

  1. An XS warehouse is idle
  2. An influx of app traffic prompts a series of queries to suddenly flow into that warehouse
  3. To avoid excessive latency and queuing, the warehouse upsizes to a M
  4. When demand reduces again, it goes back down to an XS
  5. If the user is highly confident that the warehouse won’t be in demand immediately, they can force suspend the warehouse to prevent additional credits from being consumed

In this scenario, compare the following prices:

OptimizedNot Optimized
Time Active0:27*2:37
Auto-Suspend Time0:121:00**
Total Active Time0:393:37
Warehouse SizeMXS
Credits Consumed0.0170.060
Cost Per Credit$3.10$3.10
Total Spend$0.053$0.187
Savings71.7%

* Snowflake automatically bills the first 60 seconds of warehouse activity, so this is charged as 60 seconds.

** Snowflake auto-suspends in 30 second increments, so if the auto-suspend was set for 45 seconds, it would actually only run for 60 seconds.

The spend difference in the example above has a small absolute value. But when you multiply that over several days, weeks, and months, you can end up saving thousands of dollars. And that’s just in one warehouse—when you multiply it out among your entire Snowflake account, it’s not uncommon for people to save hundreds of thousands of dollars. 

Query routing

We mentioned above the use of query routing to handle inefficiently worded queries. In reality, query routing offers a number of other advantages, including:

  • Maintaining balanced workloads 24/7
  • Maximizing warehouse optimization—no need to scale up warehouses when queries are reassigned to other provisioned resources
  • Get the most out of your credits purchased at Capacity

The best way to explain how query routing works is to use an analogy. Let’s say you have different sized fruits: cherries, oranges, and watermelons. Those are your queries. And then you have different sized boxes: small, medium, and large. Those are your warehouses. 

Query routing works by making sure the fruit ends up in the right-sized box. If you put a cherry in a large box, that’s a lot of box that’s empty. If you put a watermelon into a small box, it doesn’t fit. 

Snowflake query routing

Comprehensive Snowflake observability

Most of the time, people don’t realize they’re overspending on Snowflake because they’re simply unaware of their activity, credit consumption, and resources and users that are placing too high a demand on the platform. 

By deploying a Snowflake observability solution (like Keebo), users can surface information on the health of their warehouses, queries, data, and more. This provides the insights necessary for action, whether manual, human-approved/AI-assisted, or fully autonomous. 

Snowflake workload intelligence

Why it’s difficult to save on Snowflake without AI

But there’s a major challenge to implementing the tactics listed above: doing them manually is impossible at scale. Trying to implement a manual Snowflake cost savings strategy won’t help you get the most out of the platform. Worse, it could end up causing performance issues—e.g. you downsize a warehouse and forget to upsize it again! 

That’s where Keebo comes in. Our fully autonomous, AI-powered optimizer proactively seeks out opportunities to save and takes action in real time. We’ve been able to save our customers 25% or more on their Snowflake bill, and can do the same for you.

See why Keebo is the #1 Snowflake cost savings tool—schedule a demo today

Author

Skye Callan
Skye Callan
Articles: 12