A Technical Deep Dive into Snowflake Pricing
Learn everything there is to know about Snowflake pricing so you can estimate your usage and costs.
Leonie van der Sleen
March 3, 2023
13 minutes
Intro
Snowflake is, without a doubt, the simplest and easiest data platform to run and maintain, but understanding how Snowflake pricing works is not quite so straightforward. In this blog, I’ll cover the major factors impacting cost, the different Snowflake editions, credit usage, pricing agreements, additional fees, and actual pricing examples.
How is Snowflake Pricing Calculated?
Snowflake has a usage-based pricing model that’s based on storage and compute. Separating these two components allows you to scale storage and compute independently for high performance. This flexible architecture ensures you don’t accidentally over-provision unneeded resources while also helping you optimize for costs.
Compute Costs
Compute costs are billed in the form of credits that can be purchased upfront or billed monthly. Consumption is based on the number of virtual warehouses you use, their size, and how long you run them. Snowflake has built-in mechanics to optimize the use of your warehouse both for performance and cost optimization. Compute costs within Snowflake directly correlate with your virtual warehouse size and the region where your instance is hosted (more on that later), so applying a flat rate is very difficult.
Storage Costs
The second element of Snowflake pricing is that of storage. With Snowflake, you’re billed for actual storage use. This is based on the daily average number of monthly terabytes (TB) used.
Snowflake stores your data in S3 Blob Storage, GCP bucket storage, or Azure Blob Storage. Comparing Snowflake storage costs is nearly impossible because all data is automatically compressed in Snowflake. Ten TB of data becomes around one or two TB of data in Snowflake.
As with compute costs, Snowflake also offers On Demand pricing and capacity pricing for storage. With On Demand pricing, billing is based on arrears of storage. The actual cost TB depends on your cloud provider and region. Snowflake then looks at the average TB per month and applies a minimum monthly charge of $25.
With pre-purchased capacity, you’re billed upfront for a commitment to a specific capacity. Typically there are no discounts on storage, but Snowflake will automatically notify you when you’ve reached 70 percent of pre-purchased storage capacity.
Snowflake Credits
All billing in Snowflake is based around Snowflake credits. The specific price per credit is based on several factors, including:
- The Region of your Snowflake deployment
- The Snowflake Edition
- The pricing agreement: On Demand or Pre-purchase
Because several factors can influence the price of Snowflake, it is not possible to give a static answer to pricing. However, choosing an On Demand, Standard deployment of Snowflake, you can expect a minimum of $2 per credit.
How is Credit Usage Calculated?
Whenever you’re leveraging Snowflake computing, you will be charged credits. Compute power translates to the number of servers or virtual nodes supporting your queries. Within Snowflake, compute clusters are called “Virtual Warehouses” (not to be confused with data warehouses.)
A Virtual Warehouse is a named wrapper around a cluster of servers with CPU, memory, and disks. The number of servers in these clusters is based on the T-Shirt size you give your warehouse. The T-Shirt size defines the number of servers in the cluster. All T-Shirt sizes exponentially double with each increase in size. An X-Small warehouse has one server, a Small warehouse has two, a Medium warehouse has four, and this trend continues all the way up to a 6X-Large warehouse which includes 512 nodes.
Credit consumption is calculated by taking the number of seconds your virtual warehouse is running, and multiplying that number by the number of virtual servers in the cluster.
Warehouse Size | Servers | Credits per Hour | Credits per Second |
---|---|---|---|
X-Small | 1 | 1 | 0.0003 |
Small | 2 | 2 | 0.0006 |
Medium | 4 | 4 | 0.0011 |
Large | 8 | 8 | 0.0022 |
X-Large | 16 | 16 | 0.0044 |
2X-Large | 32 | 32 | 0.0089 |
3X-Large | 64 | 64 | 0.0178 |
2X-Large | 128 | 128 | 0.0356 |
2X-Large | 256 | 256 | 0.0711 |
2X-Large | 512 | 512 | 0.1422 |
Snowflake is extremely cost-effective. You can easily scale up or back down as needed without duplicating a compute cluster to deal with concurrency.
For example, a complex query that takes an hour to run on an X-Small warehouse would consume one credit. However, if you run that same query on a Medium warehouse and that same query finishes in 15 minutes, you’ll still only be consuming one credit. Snowflake’s consumption-based model means you can maximize performance without running up costs.
Virtual warehouses in Snowflake also have an auto-suspend feature you can apply to avoid being billed when you’re not actively running your warehouse. You can configure the auto-suspend feature as low as 60 seconds, which is the minimum billing amount.
Additional Costs
Even though Snowflake’s pricing is quite transparent, there are some costs you must consider when using these features
Cloud Services
Snowflake’s infrastructure is a managed cloud service layer representing the “brains" of the platform where many account-level and session operations occur. In Snowflake, you can use the DDL (Data Definition Language) commands to create, manipulate, and modify objects in Snowflake (e.g., users, warehouses, databases, etc.) or look into account logs. You can perform these activities without spinning up a virtual warehouse.
Even though these activities use compute resources, you’re only charged when these computations exceed ten percent of the total compute credits consumed in your account. You can use the WAREHOUSE_METERING_HISTORY
view to see how much cloud service computing your Snowflake account is using.
Serverless Computing
Snowflake offers five serverless features that also leverage Snowflake-managed compute resources and therefore consume credits when they are used:
- Snowpipe: Snowpipe is a serverless feature and automated service that you can use to ingest streaming data. You do not need to set up virtual warehouses since it relies on Snowflake-managed compute resources. Snowpark costs are paid using Snowflake credits, and an extra fixed Snowflake credit is applied on a per-file basis.
- Database Replication: Database replication is a feature that allows you to replicate data across regions and cloud platforms. It does not require virtual warehouses, but it will be billed in credits. This data replication feature also charges for storage and data transfer costs. Copying or moving data between regions or clouds ranges anywhere from $10 per TB (same cloud, different region) to $155 per TB (different cloud.)
- Materialized Views Maintenance: The purpose of this feature is to automatically sync materialized views with underlying base tables. This serverless feature does not need you to set up virtual warehouses but uses Snowflake-managed resources instead.
- Automatic Clustering: Automatic Clustering can be applied to tables and materialized views to optimize the clustering state when using defined cluster keys. This feature uses compute resources and is billed on a per-second basis with credits.
- Search Optimization Service (SOS): This service is only available with the Enterprise Edition or higher, and it allows you to speed up point lookup queries in massive tables. It is directly paid for with Snowflake credits and is billed on a per-second basis. The purpose of this feature is to help you achieve higher performance and decrease compute resources.
Pricing Options
Snowflake offers two usage-based pricing plans: On Demand and Capacity Pricing. These dynamic pricing models are outlined in the company’s pricing guide.
On Demand Pricing
For On Demand pricing, you’re charged a fixed rate for consumption and storage. Billing happens in arrears after every month. You can easily select a cloud region you want to deploy your Snowflake instance and choose from one of three Snowflake Editions. This pricing model is self-serve, and it’s the easiest and most flexible way to get started with Snowflake. By default, it is not the cheapest.
Capacity Pricing
Most organizations that are serious about implementing Snowflake as a cloud data platform will pre-purchase a specific capacity. You can see this as a dollar commitment to Snowflake that is predicted, planned, and tailored for your monthly consumption.
In order to leverage this form of pricing, you need to have a detailed understanding of your end-use case so you can estimate your monthly credit consumption and storage costs. This estimation is something that Snowflake or a Snowflake partner can usually provide.
Capacity Pricing is almost always cheaper and more attractive compared to On Demand Pricing because it locks you into a set contract. The price you pay for credits is determined at the time of the order and it’s based on the total committed compute you’ve estimated into your purchase.
Snowflake Editions
Snowflake has four products or editions that you can choose from (three of which are also available with On Demand Pricing.) These editions vary when it comes to features, and they have some critical differences.
Standard Edition
Standard Edition is the most basic option, and it gives you access to all of Snowflake’s basic features. It comes with the most important security features like end-to-end data encryption, federated authentication, database replication, and other support. Some limitations apply when it comes to using and actually setting up these features.
There are also many features that are not included like:
- Multi-cluster virtual warehouses
- Extended time travel (up to 90 days instead of one day)
- Rekeying encrypted data for extra security
- Setting up column and row-level security policies
- Audit access for account usage
Enterprise Edition
The Enterprise Edition, includes all Standard features but comes with several added benefits. You can set up multi-clustering for your virtual warehouses to better support concurrency for user applications where compute usage is unpredictable. Other features include 90-day time-travel, column, and row-level observability policies to help you reduce data downtime and implement security.
The Enterprise edition provides access to Account Usage history and it supports object tagging and classification. There are also robust features around security like private connectivity, failover and failback for disaster recovery, and Tri-Secret Security which lets you bring your own key for encryption.
Business Critical
Business Critical is the most complete and extended edition when it comes to hosting Snowflake in a public cloud region (non-VPC). The name already explains the use case: Business Critical is often used by companies when the data and applications driven by it are business-critical.
This edition of Snowflake offers support for specific regional regulations like HIPAA HITRUST, CSF, FedRamp, IRAP, etc., and failover between Snowflake accounts, including redirection of client connections when needed.
Virtual Private Snowflake
Virtual Private Snowflake (VPS) gives you a dedicated and managed instance of Snowflake within an AWS Virtual Private Cloud (VPS.) One cool feature about this edition of Snowflake is that your metadata will also get its own metadata store.
This makes it the most secure version of Snowflake. In specific industries like financial services, healthcare, or government, having your data in the cloud is often viewed as a trade-off between security and performance. With VPS, you get all the added benefits of Snowflake while maintaining an architecture that is more secure than an on-premises environment. VPS by default does not permit data sharing outside of the VPS, and this plan is only available with capacity pricing.
Regions
Since Snowflake has a cloud-agnostic architecture, you’re also flexible as to what cloud region you want to select to be the foundation for your Snowflake architecture. Snowflake supports the following regions:
- AWS: US East (Northern Virginia), US East (Ohio), US West (Oregon), US East (Commercial Gov - N. Virginia), EU (Ireland), EU (Stockholm), EU (Paris), Canada (Central), Asia Pacific (Sydney), Asia Pacific (Singapore), Asia Pacific (Tokyo), Asia Pacific (Seoul), Mumbai, EU (London), EU (Frankfurt), US Gov West 1, South America East 1 (São Paulo)
- Azure: East US 2 (Virginia), West US 2 (Washington), Central US (Iowa), West Europe (Netherlands), North Europe (Ireland), South Central US (Texas), Canada Central (Toronto), Australia East (Sydney), Southeast Asia (Singapore), Japan East (Tokyo), Switzerland North (Zurich), US Gov Virginia, UAE North (Dubai), UK South (London), Central India (Pune)
- GCP: US Central 1 (Iowa), US East 4 (N. Virginia), Europe West 2 (London), Europe West 4 (Netherlands)
Pricing Example
Let’s look at an example as to how Snowflake costs are calculated. Imagine you purchase Snowflake on a Capacity Plan and go for the Standard Edition deployed on AWS EU Ireland. The first step is to look at how often you would load or query data and how much you would store. Here is an example:
- You store an average of six TB of compressed data (30 TB without compression.)
- You run a batch loading job every night for 3 hours, using an X-Small warehouse.
- You enable seven users to work on business days from 8 AM in the morning until 6 PM in the evening, using a Small warehouse.
- You leverage Reverse ETL to automatically query and sync your warehouse data out of Snowflake to your downstream operational tools. This job runs daily in a Small warehouse for 30 mins.
First, you need to look at the requirements for the data loading job that runs every night:
With a daily loading frequency and a loading window of 3 hours on an X-Small Warehouse (1 credit/hour) that would translate to 93 credits per month (1 credit x 3 hours per day x 31 days per month.)
Next, you’ll want to understand your user requirements:
Seven users running a Small warehouse from 8 AM to 6 PM (10 hours) equivalates to 400 credits per month (2 credits x 10 hours x 20 days)
The final calculation is for your Reverse ETL workload syncing data to your operational tools.
This use case is much cheaper. With a daily query frequency and a querying window of 30 minutes on an Small Warehouse (2 credits/hour) this only amounts to 31 credits.
This brings you to a total of 524 credits per month.
The monthly costs for storage and compute would be as follows:
- Data Storage Costs: $1,656 - 6TB x $23 (per TB per month) x 12 months
- Virtual Warehouse Costs $15,531 - 524 (credits per month) x $2.60 (per credit) x 0.95 (5% sample discount on capacity pricing) x 12 months
- Total Costs: $17,187 - Data Storage (per year) + Computing (per year)
To calculate the total, you would combine the storage price for 6TB of compressed data and the price for the virtual warehouses:
This means with these three workloads and storing 6TB of data in Snowflake you would get to an annual price of $17,187. Bear in mind that this estimate is based on the current pricing as given by Snowflake’s Price List and extracting an assumed 5 percent discount for Capacity Pricing.
Final Thoughts
From a technology perspective, Snowflake is an absolutely fantastic data platform, especially for data teams who don’t want to focus on ongoing maintenance, query optimization, or resource provisioning.
All of this comes with an added cost though, so understanding every aspect of Snowflake pricing will help you not only optimize which workloads you run, but it will also help you maximize your compute, storage, and spend in Snowflake as well.