Bird
Raised Fist0
Snowflakecloud~10 mins

Zero-copy cloning in Snowflake - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Zero-copy cloning
Start: Existing Object
↓
Create Clone
↓
Clone Points to Original Data
↓
Read/Query Clone
↓
If Clone Modified?
No→Use Original Data
Yes↓
Store Changes Separately
↓
Clone Maintains Own Metadata
↓
End: Efficient Storage & Fast Clone Creation
Zero-copy cloning creates a new object that points to the original data without copying it, saving space and time. Changes to the clone are stored separately.
Execution Sample
Snowflake
CREATE TABLE original (id INT, name STRING);
INSERT INTO original VALUES (1, 'Alice');
CREATE TABLE clone CLONE original;
SELECT * FROM clone;
INSERT INTO clone VALUES (2, 'Bob');
SELECT * FROM original;
This code creates a table, clones it without copying data, queries the clone, modifies the clone, and then queries the original to show it is unchanged.
Process Table
StepActionData StoredClone BehaviorResult
1Create original tableData for Alice insertedNo clone yetOriginal table has 1 row
2Create clone of originalNo new data copiedClone points to original dataClone appears identical to original
3Select from cloneReads original dataNo separate storageReturns 1 row: Alice
4Insert new row into cloneNew data stored separatelyClone diverges from originalClone has 2 rows: Alice, Bob
5Select from originalOriginal data unchangedNo effect from clone insertReturns 1 row: Alice
💡 Clone creation stops copying data; modifications stored separately to keep original intact
Status Tracker
VariableStartAfter Step 2After Step 4Final
original_table_rows01 (Alice)1 (Alice)1 (Alice)
clone_table_rowsN/A1 (Alice, via pointer)2 (Alice, Bob)2 (Alice, Bob)
storage_used0Data for Alice onlyData for Alice + new Bob row separatelyData for Alice + Bob separately
Key Moments - 3 Insights
Why doesn't creating a clone copy all the data immediately?
Because zero-copy cloning points the clone to the original data without copying it, saving space and time as shown in execution_table step 2.
What happens when we insert new data into the clone?
The new data is stored separately for the clone only, so the original remains unchanged, as seen in execution_table step 4 and 5.
Does querying the clone always read from the original data?
Yes, until the clone is modified. Before modification, it reads original data directly (step 3). After modification, it reads original plus its own changes.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, at which step does the clone start storing its own data separately?
AStep 2
BStep 3
CStep 4
DStep 5
💡 Hint
Check the 'Data Stored' and 'Clone Behavior' columns in step 4.
According to variable_tracker, how many rows does the original table have after step 4?
A2 rows
B1 row
C0 rows
D3 rows
💡 Hint
Look at 'original_table_rows' after step 4 in variable_tracker.
If we inserted data into the original after cloning, what would the clone see?
AThe new data immediately
BNo new data, clone is isolated
COnly if clone is refreshed manually
DDepends on storage size
💡 Hint
Recall that clone points to original data unless modified, see concept_flow and execution_table.
Concept Snapshot
Zero-copy cloning creates a new object pointing to original data without copying.
Modifications to clone are stored separately.
Original remains unchanged by clone changes.
Clone creation is fast and storage-efficient.
Queries read original data unless clone diverges.
Full Transcript
Zero-copy cloning in Snowflake lets you create a new table or object that points to the original data without copying it. This saves time and storage. When you create a clone, it shares the original data. If you query the clone before changes, it returns the original data. When you insert or update the clone, those changes are stored separately, so the original stays the same. This way, cloning is fast and efficient. The clone maintains its own metadata and diverges only when modified.

Practice

(1/5)
1. What is the main benefit of zero-copy cloning in Snowflake?
easy
A. It deletes the original data after cloning.
B. It compresses data to save storage space.
C. It encrypts data automatically during cloning.
D. It creates instant copies without duplicating the original data.

Solution

  1. Step 1: Understand zero-copy cloning concept

    Zero-copy cloning creates a copy of data instantly without physically duplicating the data.
  2. Step 2: Identify the main benefit

    This saves storage and time because the clone shares the original data until changes are made.
  3. Final Answer:

    It creates instant copies without duplicating the original data. -> Option D
  4. Quick Check:

    Zero-copy cloning = instant copy without duplication [OK]
Hint: Zero-copy cloning shares data, no extra storage used [OK]
Common Mistakes:
  • Thinking cloning duplicates all data immediately
  • Confusing cloning with data encryption
  • Assuming original data is deleted after cloning
2. Which of the following is the correct syntax to create a zero-copy clone of a table named sales_data in Snowflake?
easy
A. CREATE TABLE sales_data_clone AS CLONE sales_data;
B. CREATE CLONE sales_data_clone FROM sales_data;
C. CREATE TABLE sales_data_clone CLONE sales_data;
D. CLONE TABLE sales_data TO sales_data_clone;

Solution

  1. Step 1: Recall Snowflake cloning syntax

    The correct syntax to clone a table is: CREATE TABLE new_table CLONE original_table;
  2. Step 2: Match syntax with options

    CREATE TABLE sales_data_clone CLONE sales_data; matches the correct syntax exactly.
  3. Final Answer:

    CREATE TABLE sales_data_clone CLONE sales_data; -> Option C
  4. Quick Check:

    CREATE TABLE ... CLONE ... is correct syntax [OK]
Hint: Use CREATE TABLE new_table CLONE original_table [OK]
Common Mistakes:
  • Using CREATE CLONE instead of CREATE TABLE ... CLONE
  • Adding AS before CLONE incorrectly
  • Using CLONE TABLE ... TO syntax which is invalid
3. Consider this Snowflake SQL snippet:
CREATE TABLE original (id INT, value STRING);
INSERT INTO original VALUES (1, 'A'), (2, 'B');
CREATE TABLE clone_table CLONE original;
INSERT INTO clone_table VALUES (3, 'C');
SELECT COUNT(*) FROM original;

What will be the output of the SELECT query?
medium
A. 2
B. Error
C. 0
D. 3

Solution

  1. Step 1: Understand cloning and data insertion

    The clone_table is a zero-copy clone of original, sharing data initially. Inserting into clone_table does not affect original.
  2. Step 2: Count rows in original table

    Original has 2 rows inserted initially and remains unchanged after clone_table insert.
  3. Final Answer:

    2 -> Option A
  4. Quick Check:

    Original rows unchanged after clone insert [OK]
Hint: Inserts to clone don't affect original table [OK]
Common Mistakes:
  • Assuming insert in clone adds rows to original
  • Thinking clone is a full independent copy immediately
  • Expecting error due to cloning
4. You tried to create a zero-copy clone of a database using:
CREATE DATABASE clone_db CLONE original_db;

But received an error. What is the most likely cause?
medium
A. The original database does not exist.
B. You cannot clone a database, only tables.
C. The clone syntax requires the keyword TABLE.
D. You need to specify a schema when cloning a database.

Solution

  1. Step 1: Check cloning rules for databases

    Snowflake supports cloning databases if the original database exists.
  2. Step 2: Identify error cause

    If the original_db does not exist, cloning fails with an error.
  3. Final Answer:

    The original database does not exist. -> Option A
  4. Quick Check:

    Cloning requires existing source database [OK]
Hint: Ensure original database exists before cloning [OK]
Common Mistakes:
  • Thinking databases cannot be cloned
  • Adding TABLE keyword incorrectly
  • Assuming schema must be specified
5. You want to create a zero-copy clone of a large table for testing, but only want to clone data as it was at a specific past time. Which Snowflake feature should you use with cloning?
hard
A. Use a full data export and import instead of cloning.
B. Use Time Travel to specify the past timestamp during cloning.
C. Clone the table and then manually delete unwanted rows.
D. Use a materialized view to clone the data at that time.

Solution

  1. Step 1: Understand cloning with Time Travel

    Snowflake allows cloning data as it existed at a past time using Time Travel feature.
  2. Step 2: Apply Time Travel in cloning

    You specify the timestamp or offset in the clone statement to get data snapshot at that time.
  3. Final Answer:

    Use Time Travel to specify the past timestamp during cloning. -> Option B
  4. Quick Check:

    Time Travel + cloning = snapshot at past time [OK]
Hint: Combine Time Travel with clone for past data snapshot [OK]
Common Mistakes:
  • Thinking cloning alone can get past data
  • Using export/import which is slower
  • Using materialized views which don't clone data
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard