How Snowflake Pricing Works.

How Snowflake Pricing Works #

Snowflake pricing is a bit complicated, this is a result of usage based pricing together with their evolution into a serverless database. Let’s start with the fundamentals.

The basics #

The pricing landing page is an excellent starting point to the Snowflake pricing model and to its complexity. Pricing is affected by the following factors:

After you have chosen the above, you get credit prices for different product bundles. More specifically:

Then we also have storage costs on top of the credits, with two options:

In terms of pricing increments, each additional tier adds cost to the previous one with the Virtual Private Snowflake being a “contact us” for pricing option.

An example of prices for:

And for storage we have:

Based on the above, to understand how pricing works for Snowflake, we need to understand how credits are consumed by interacting with the platform, that’s where things get really interesting.

What consumes Credits #

Everything that you do on Snowflake consumes credits, but in different ways. Let’s see the different categories of credit consumption.

Compute #

Is the main source of credit consumption, when you run a warehouse and process data. This is the main driver for consumption on Snowflake. The entity that represents compute is the Warehouse and it comes in different sizes from XS to 6X-LARGE with XS costing 1 credit per hour and 6X-LARGE costing 512 credits per hour.

Credits are consumed by a warehouse only when the warehouse is running, if you suspend it you don’t get charged for it. But it is important to note that:

Each time a warehouse is resized, started or resumed, the warehouse is billed for 1 minute worth of usage based on the hourly rate of the warehouse size.

This is important to note because if you plan to resume, execute a query and then suspend a warehouse and the query takes less than a minute to complete, then you’ll pay for at least a minute of execution time.

After the first minute, billing is calculated on a per second basis.

Cloud Services #

Many services are billed as part of cloud services but the most important ones are the following.

What’s interesting with Cloud Services is that you are supposed to be billed for the usage of cloud services that exceeds 10% of the daily usage of the compute resources.

In any case, cloud services are never going to dominate the costs, but it’s interesting to note that even when you load a worksheet on the Snowflake UI, you pay for cloud services.

Data Storage #

Is calculated monthly and includes:

Data Storage does not consume credits, instead there’s a flat rate per terabyte.

Examples #

Snowflake offers TPCH as a dataset that can be used for testing. Let's see some examples of queries and their cost.

QueryCloud Services CostCompute Cost
tpch_q60.00005050.00196419
tpch_q180.00010670.129133
Tech_q90.00016620.0827203

The above costs are in credits consumed for the total execution of the query. It's easy to notice the difference in cost between compute and cloud services, in this case the main driver behind cloud services cost is query compilation and optimization.

To get the above numbers I used a Warehouse of size Large and the dataset TPCH with scale factor 1000.

In another post, I'll go through the tools you have to calculate the above costs for your own workloads.

Please consider sharing this article.

For comments, feedback and everything else, please ping me on Twitter.

Published