Pro ยท Lesson 3 of 13
Storage, warehouses, and cloud services scale on different clocks.
Sign in to save your place.
The books stay on the shelves. Opening a second reading room does not photocopy the library. Closing a room does not throw the books away. The front desk remembers who is allowed in, which shelf a title is on, and which room should take the next question.
Table data is stored compressed in the cloud provider's storage, organized into micro-partitions. Snowflake's micro-partition page says each partition holds about 50 MB to 500 MB of uncompressed data, and the stored size is smaller because the data is compressed. Rows in a partition are stored by column.
Cloud services keeps metadata about those partitions, including enough statistics to skip partitions that cannot match a filter. That pruning is why a selective query can avoid reading the whole table.
Storage billing includes active bytes, Time Travel bytes, and Fail-safe bytes. Cloning does not copy those bytes until a change creates new partitions.
A virtual warehouse is an independent cluster. It does not share compute with other warehouses, so a heavy load on a loading warehouse does not slow a separate analyst warehouse pointed at the same tables.
You can resize a warehouse while it runs. Size is the resources per cluster. Multi-cluster warehouses, which require Enterprise Edition or higher, add more clusters of that size for concurrency. Resizing makes one query faster. Extra clusters help more people run at once.
If the warehouse does not have enough resources left, extra queries queue. They are not rejected. Multi-cluster warehouses in auto-scale mode start and stop clusters using a scaling policy. Standard favors responsiveness. Economy favors fewer credits.
Cloud services handles authentication, access control, metadata, query compilation, and dispatch. It runs on compute that Snowflake provisions. You do not size it yourself.
The result cache lives on this layer. When Snowflake can reuse a stored result, the warehouse does not recompute the query. Treat the cache as a bonus you can see in the query profile, not as a design you should time to a fixed number of hours without reading the current cache page.
Cloud services credits are adjusted daily in UTC. Only the part above 10% of that day's virtual-warehouse credits is billed, and the adjustment cannot exceed the cloud services actually used that day.
| If you need | Change this | Leave this alone |
|---|---|---|
| A faster single scan | A larger warehouse size | Do not copy the table into a second database just to go faster |
| More concurrent users | Multi-cluster warehouse (Enterprise+) | Do not give every user ACCOUNTADMIN |
| Less idle spend | AUTO_SUSPEND and a resource monitor | Do not turn off the storage layer |
A nightly load and a busy dashboard share the same tables without slowing each other down.
Step 1 of 3Both teams read the same single copy of each table. Nobody exports or duplicates data to give another team access.
GRANT SELECT ON ALL TABLES IN SCHEMA sales TO ROLE analyst;
Step 2 of 3The load runs on LOAD_WH while dashboards run on BI_WH. They don't share CPU, so a heavy load can't make a dashboard slow.
CREATE WAREHOUSE bi_wh WAREHOUSE_SIZE = XSMALL AUTO_SUSPEND = 60;
Step 3 of 3Cloud services keeps the minimum and maximum of each column for every micro-partition and coordinates transactions, so readers see a consistent table even mid-load.
SELECT MAX(order_date) FROM orders; -- often answered from metadata alone
Create a tiny table with the learning warehouse, then a second warehouse for a different kind of work. Both can see the table. Suspend the second warehouse when you are done so the trial does not keep paying for it.
USE WAREHOUSE LEARN_WH;
CREATE DATABASE IF NOT EXISTS LEARN_DB;
CREATE SCHEMA IF NOT EXISTS LEARN_DB.PUBLIC;
CREATE OR REPLACE TABLE LEARN_DB.PUBLIC.HELLO (
ID NUMBER,
NOTE STRING
);
INSERT INTO LEARN_DB.PUBLIC.HELLO VALUES (1, 'stored once');
CREATE WAREHOUSE IF NOT EXISTS LOAD_WH
WAREHOUSE_SIZE = XSMALL
AUTO_SUSPEND = 60
AUTO_RESUME = TRUE
INITIALLY_SUSPENDED = TRUE;
USE WAREHOUSE LOAD_WH;
SELECT * FROM LEARN_DB.PUBLIC.HELLO;
ALTER WAREHOUSE LOAD_WH SUSPEND;
Checked against Snowflake documentation in October 2026. Product behavior still depends on your edition, cloud, and region.