Snowflake Pricing Explained | 2024 Billing Model Guide
- Date
- Niall WoodwardCo-founder & CTO of SELECT
- Ian WhitestoneCo-founder & CEO of SELECT
Snowflake Overview
Snowflake is a data cloud platform used by organizations to store, process and analyse data. Snowflake uses the big three cloud providers for hosting - AWS (Amazon Web Services), GCP (Google Cloud Platform), and Microsoft Azure. Snowflake is a fully-managed platform, and users have no direct access to the underlying infrastructure. This is owed to Snowflake’s goal of making the platform straightforward to use by managing complexity while still providing a powerful feature set.
Snowflake’s stand out features include decoupled storage and compute layers, just-in-time provisioning and automatic suspension of unused compute instances (known as virtual warehouses). The decoupled storage layer enables features such as zero-copy cloning and data sharing.
Snowflake’s Pricing Model
Like most cloud SaaS (Software as a Service) platforms, Snowflake utilizes usage based pricing. Rather than a fixed monthly or annual fee, Snowflake tracks usage volumes across computation, data storage and transfer, calculating costs from pre-determined rates for each.
Snowflake has a currency called ‘credits’. Snowflake Credits are consumed by performing activities within the platform - running virtual warehouses etc. The cost of each credit depends on three main factors - Snowflake edition, hosting location, and cloud provider.
Snowflake Editions
You can think of Snowflake Editions as different plans Snowflake offers.
Snowflake currently offers four editions: Standard, Enterprise, Business Critical, and Virtual Private Snowflake (VPS). Each Snowflake Edition is differentiated by the availability of certain features. The primary differentiators are that Enterprise customers gain multi-cluster warehouses (horizontal scaling), with business critical and VPC editions focusing almost entirely on increased security and data protection. For full details on the features offered between each edition, see the Snowflake documentation.
Snowflake Regions
An individual Snowflake account runs in a single region. Customers are free to create as many accounts as they wish across both cloud providers and regions. Snowflake has over 35 regions to choose from. Customers typically choose the same region and cloud provider as their existing infrastructure for their primary account.
Advantages of Snowflake pricing
Snowflake’s usage-based pricing model means you only pay for the resources you consume. This fact combined with Snowflake’s speed of provisioning (typically less than a second), means that customers can use automatic scaling to switch off unused virtual warehouses without experiencing performance issues when they’re needed again.
Disadvantages of Snowflake pricing
The main disadvantage with Snowflake’s pricing model, like all usage-based pricing models is the variability. It is difficult to produce accurate cost estimates prior to adopting Snowflake, and costs vary with usage. This combined with the freedom of users to potentially spend a lot of money by using over-sized virtual warehouses means it’s essential to have robust monitoring and budgeting practices in place.
Is Snowflake cost effective?
Snowflake is extremely cost effective, provided the right practices are in place. We recommend implementing robust monitoring practices to track your usage using either Snowflake’s built-in reporting in the UI, creating custom dashboards, or using a product like SELECT.
Snowflake Credit Pricing (Cost Per Credit)
The cost of each Snowflake Credit depends on four factors:
- Snowflake edition
- Hosting region
- Cloud provider
- Discounts
Here is the range of cost per credit across each edition, using on-demand payment terms, where usage is invoiced every month. The lower value of each range represents the typical US AWS regions used by most customers, with the upper values in regions outside of the USA.
Standard | Enterprise | Business Critical | VPS (Virtual Private Snowflake) |
---|---|---|---|
$2.00 - $3.10 | $3.00 - $4.65 | $4.00 - $6.20 | $6.00 - $9.30 |
Most customers opt to pay for Snowflake using capacity commitment contracts (capacity pricing), where usage is pre-purchased upfront. Opting for a capacity commitment contract provides discounts on the per-credit prices on a sliding scale.
For a comprehensive table of Snowflake credit costs across all clouds and regions, see the Snowflake Credit Consumption Table.
Pricing for Each Snowflake Service
Virtual Warehouse Pricing
Virtual warehouses are typically the primary source of cost, as they are used to run queries. Customers will often refer to these as "compute costs". The price of Snowflake warehouses varies based on their size. Here's a list of each virtual warehouse size as well as the associated costs:
Warehouse Size | Credits / Hour | Snowpark-Optimized Credits / Hour |
---|---|---|
X-Small | 1 | N/A |
Small | 2 | N/A |
Medium | 4 | 6 |
Large | 8 | 12 |
X-Large | 16 | 24 |
2X-Large | 32 | 48 |
3X-Large | 64 | 96 |
4X-Large | 128 | 192 |
5X-Large | 256 | 384 |
6X-Large | 512 | 768 |
Each warehouse size increment doubles the resources available. Snowpark-optimized warehouses are a newer warehouse type, with 16x the memory of the ‘normal’ warehouse type for each size, at 1.5X the cost.
Virtual warehouse compute costs typically make up 80% of a Snowflake customer's bill. As a result, they are often the focus of any cost optimization efforts.
Serverless Pricing
For Snowflake’s serverless features like Snowpipe, Automatic Clustering and Serverless tasks, credits are consumed using a multiplier specific to each feature. The cheapest services from a credits per hour perspective are Query Acceleration and Snowpipe Streaming, which both incur a cost of 1 compute credit per hour. The most expensive feature is the Search Optimization Service, which incurs a cost of 10 compute credits per hour.
Feature | Compute Credits per Hour | Cloud Services Credits per Hour |
---|---|---|
Clustered tables | 2 | 1 |
Copy Files | 2 | N/A |
Logging | 1.25 | 1 |
Materialized views maintenance | 10 | 5 |
Materialized views maintenance in secondary databases | 2 | 1 |
Query acceleration | 1 | 1 |
Replication | 2 | 1 |
Search optimization service | 10 | 5 |
Search optimization service in secondary databases | 2 | 1 |
Serverless tasks | 1.5 | 1 |
Snowpipe | 1.25 | N/A but charged 0.06 Snowflake Credits/1000 Files |
Snowpipe Streaming | 1 | N/A but charged at an hourly rate of 0.01 Snowflake Credits per client instance |
Storage Pricing
Snowflake stores data in a proprietary file format called micro-partitions in the cloud storage service of the underlying cloud provider (i.e. Amazon S3, Azure Blob Storage, Google Cloud Storage).
Snowflake uses direct dollar pricing for storage. Prices again vary depending on cloud provider and region. Customers on AWS USA regions pay $23 per TB per month. Regions outside of the USA again are more expensive. A comprehensive breakdown of all storage costs across all regions can be found on the Snowflake website.
If you're looking for a deep dive into Snowflake storage costs, be sure to check out our post here. For quick wins on reducing unnecessary storage costs, you can query your account to identify any unused tables and remove them.
Data Transfer Costs
Data transfer is the process of moving data into and out of Snowflake. Data moving into Snowflake is often referred to as "ingress", whereas data moving out of Snowflake is referred to as "egress". Here are some important notes on how data transfer costs work in Snowflake:
- Snowflake does not charge for data ingress.
- It is free of charge to transfer data between the same region and cloud provider.
- Only specific Snowflake features incur data transfer costs (unloading data, data replication, using external functions, etc. - see here).
- Data egress charges do not apply when a Snowflake client or driver retrieves query results, even if those happen across cloud platforms or regions!
Again, the full costs can be found on the Snowflake website.
Cloud Services Costs
Snowflake’s cloud services layer is responsible for everything that isn’t the actual storing and processing of data. That includes authentication, query compilation, and zero-copy cloning to name a few. Snowflake’s pricing for cloud services uses a fair-use style model, where so long as cloud services usage doesn’t exceed 10% of compute usage, no additional costs are incurred. For example, if a customer uses 100 compute credits, and 5 cloud services credits, they are canceled out:
Service | Credits Used |
---|---|
Compute | 100 |
Cloud Services | 5 |
Cloud Services Rebate | -5 |
Total | 100 |
If the cloud services credits increase to 15 however:
Service | Credits Used |
---|---|
Compute | 100 |
Cloud Services | 15 |
Cloud Services Rebate | -10 |
Total | 105 |
Only 10 credits are rebated, calculated as 10% of the compute credits used. Therefore, the customer is charged for 5 cloud services credits.
Most customers never pay for cloud services due to this 10% policy. Scenarios where this isn’t the case are typically where a large number of simple queries are been executed, as these have a high cloud services cost relative to their compute costs.
Snowpark Container Services Pricing
Snowpark Container Services (SPCS) is a new, fully managed container offering from Snowflake. As of February 2024, it is currently in public preview in a select number of AWS regions. SPCS allows Snowflake customers to run containerized workloads directly in Snowflake. You can learn more about the service in the Snowflake documentation.
SPCS runs on top of Compute Pools, which are different than virtual warehouses. The credits per hour for each type of compute are shown below:
Compute Node Type | XS | S | M | L |
---|---|---|---|---|
CPU | 0.11 | 0.22 | 0.43 | 1.65 |
High-Memory CPU | N/A | 0.56 | 2.22 | 8.88 |
GPU | N/A | 1.14 | 5.366 | 28.246 |
A detailed breakdown of each compute node type can be found below:
INSTANCE_FAMILY | vCPU | Memory (GiB) | Storage (GiB) | GPU | GPU Memory per GPU (GiB) | Max. Limit | Description |
---|---|---|---|---|---|---|---|
CPU - XS | 2 | 8 | 250 | n/a | n/a | 50 | Smallest instance available for Snowpark Containers. Ideal for cost-savings and getting started. |
CPU - S | 4 | 16 | 250 | n/a | n/a | 50 | Ideal for hosting multiple services/jobs while saving cost. |
CPU - M | 8 | 32 | 250 | n/a | n/a | 20 | Ideal for having a full stack application or multiple services. |
CPU - L | 32 | 128 | 250 | n/a | n/a | 20 | For applications which need an unusually large number of CPUs, memory, and Storage. |
High-Memory CPU - S | 8 | 64 | 250 | n/a | n/a | 20 | For memory-intensive applications. |
High-Memory CPU - M | 32 | 256 | 250 | n/a | n/a | 20 | For hosting multiple memory-intensive applications on a single machine. |
High-Memory CPU - L | 128 | 1024 | 250 | n/a | n/a | 20 | Largest high-memory machine available for processing large in-memory data. |
GPU - S | 8 | 32 | 250 | 1 NVIDIA A10G | 24 | 10 | Our smallest NVIDIA GPU size available for Snowpark Containers to get started. |
GPU - M | 48 | 192 | 250 | 4 NVIDIA A10G | 24 | 5 | Optimized for intensive GPU usage scenarios like Computer Vision or LLMs/VLMs. |
GPU - L | 192 | 2048 | 250 | 8 NVIDIA A100 | 40 | On request | Largest GPU instance for specialized and advanced GPU cases like LLMs and Clustering etc. |
Snowflake Pricing Example
Let’s work through a realistic example of Snowflake’s pricing across a month. Suppose we run a data platform for a relatively small organization, with data loading jobs, transformations, and a BI tool querying the transformed data. We also have some Snowpipes doing ingestion from S3, and have a couple of tables with automatic clustering turned on to keep where predicates performant on a date column. Across the account, we have 5TB of storage, and are running the Snowflake account in AWS US East 1 on Enterprise edition. Each credit costs $3.
Frequently Asked Questions
Does Snowflake offer a free plan or free trial?
Yes, a free trial of Snowflake with $400 of free credits can be created here.
What is the minimum billing fee for Snowflake?
Snowflake has no minimum billing requirement for on-demand pricing. The minimum amount for a capacity commitment contract is $25,000.
How do Snowflake Capacity Contracts work?
For any customers spending over (or close to) $25,000 / year on Snowflake, it makes sense to consider signing an annual capacity commitment contract as Snowflake will give you discounts and a dedicated account manager. The biggest discount will be for Storage, where the pricing drops from the on-demand rate of $40/TB to $23/TB.
With Snowflake contracts, you pay upfront for a pre-committed capacity amount. As you use Snowflake and consume Snowflake credits, Snowflake will deduct those fees from your available balance. In the event you use more than your pre-committed amount, you can purchase additional capacity. If you use less than capacity you purchased, you can roll over your unused capacity to your next contract if the next contract you sign is for the same amount or higher.
Due to this nature, it's important to ensure you don't over-commit on unneeded capacity, since you can end up in a situation where you lose all your unused capacity in order to renew at a lower rate and avoid continuing to over-commit.
Does Snowflake offer discounts?
Snowflake offers discounts on capacity commitment contracts, which increase with the amount of capacity purchased as well as your contract length (i.e. 1 year vs. 3 year). The discount tiers and amounts are not publicized.
BigQuery vs. Snowflake pricing?
Google BigQuery has two pricing models, on-demand, and capacity. Despite sharing the same names with Snowflake’s pricing models, they are very different. In on-demand, BigQuery charges for the data scanned per query. In the capacity model, BigQuery charges per slot/hour, where a slot is a unit of compute. This is very similar to Snowflake’s pricing model, and shares the same per-second billing increment and 1 minute minimum charge. Like Snowflake, BigQuery has several editions to choose from with different feature availability.
Databricks vs. Snowflake pricing?
Databricks differs from BigQuery and Snowflake in that Databricks runs workloads on compute instances that you pay for in your own cloud account. Consequently, it incurs costs both to Databricks directly, and in your cloud account. Databricks also offers a Serverless SQL model where the compute instances are managed by Databricks. For this service, costs are only paid to Databricks. This is more closely aligned with Snowflake and BigQuery’s pricing and operating models.
Redshift vs. Snowflake pricing?
Amazon Redshift has two operating and pricing models available: DC2 and RA3. DC2 is the more traditional data warehouse deployment model, where compute instances and local storage are bound together. RA3 on the other hand separates storage and computation. The advantage of this model is that surplus capacity is minimized, as compute and storage can independently scale to match the needs of the customer. RA3 is the more similar option to Snowflake.
Is Snowflake expensive?
There is a widespread rhetoric that Snowflake is expensive, and if managed improperly, it can be. Customers not choosing the right warehouse size or creating too many warehouses without proper controls in place can often be a culprit of runaway costs. However, all usage-based cloud platforms get expensive when not used thoughtfully, this isn’t unique to Snowflake. When using the right processes, monitoring and management, Snowflake can be a very cost-effective choice for a cloud data platform. At SELECT, we've built our entire data platform on top of Snowflake due to its ease of use, scalability, and it's cost-effectiveness.