Auto-suspend and auto-resume in Snowflake - Time & Space Complexity
We want to understand how the time cost changes when Snowflake automatically pauses and resumes warehouses.
Specifically, how does this affect the number of operations as usage grows?
Analyze the time complexity of auto-suspend and auto-resume behavior.
-- Warehouse is set to auto-suspend after 5 minutes
ALTER WAREHOUSE my_wh SET AUTO_SUSPEND = 300;
-- Warehouse is used by queries
SELECT * FROM my_table;
-- Warehouse auto-suspends after inactivity
-- Warehouse auto-resumes when new queries arrive
This sequence shows how the warehouse pauses when idle and starts again when needed.
Look at what happens repeatedly during usage.
- Primary operation: Warehouse auto-suspend and auto-resume triggers
- How many times: Once per idle period followed by new query activity
As the number of queries increases, the warehouse may suspend and resume multiple times.
| Input Size (n) | Approx. Auto-suspend/Resume Cycles |
|---|---|
| 10 queries | Few cycles if queries are close in time |
| 100 queries | More cycles if queries are spread out with idle gaps |
| 1000 queries | Many cycles if queries are intermittent with idle periods |
Pattern observation: The number of suspend/resume cycles grows roughly with how often queries are separated by idle time.
Time Complexity: O(n)
This means the number of suspend and resume operations grows linearly with the number of query bursts separated by idle time.
[X] Wrong: "Auto-suspend and auto-resume happen only once regardless of query count."
[OK] Correct: Each time the warehouse is idle for the set period, it suspends, and each new query triggers a resume, so these operations happen multiple times as usage patterns vary.
Understanding how auto-suspend and auto-resume scale helps you explain cost and performance trade-offs in cloud data warehouses.
"What if the auto-suspend time is set to zero (disabled)? How would the time complexity of suspend/resume operations change?"
Practice
auto-suspend feature in a Snowflake warehouse?Solution
Step 1: Understand auto-suspend functionality
Auto-suspend stops the warehouse when it is idle for a set time to avoid unnecessary charges.Step 2: Differentiate from auto-resume
Auto-resume starts the warehouse when a query runs, not auto-suspend.Final Answer:
To automatically stop the warehouse after a period of inactivity to save costs -> Option CQuick Check:
Auto-suspend = stops warehouse after inactivity [OK]
- Confusing auto-suspend with auto-resume
- Thinking auto-suspend increases warehouse size
- Assuming auto-suspend backs up data
Solution
Step 1: Recall correct syntax for enabling auto-resume
The correct command uses ALTER WAREHOUSE with SET AUTO_RESUME = TRUE.Step 2: Eliminate incorrect options
ALTER WAREHOUSE my_wh SET AUTO_SUSPEND = TRUE; sets auto_suspend, not auto_resume. CREATE WAREHOUSE my_wh AUTO_RESUME = ON; uses wrong syntax for CREATE. ALTER WAREHOUSE my_wh ENABLE AUTO_RESUME; uses invalid command.Final Answer:
ALTER WAREHOUSE my_wh SET AUTO_RESUME = TRUE; -> Option AQuick Check:
Enable auto-resume with SET AUTO_RESUME = TRUE [OK]
- Confusing AUTO_RESUME with AUTO_SUSPEND
- Using CREATE instead of ALTER for existing warehouse
- Using invalid commands like ENABLE AUTO_RESUME
ALTER WAREHOUSE my_wh SET AUTO_SUSPEND = 300; ALTER WAREHOUSE my_wh SET AUTO_RESUME = TRUE; -- Warehouse is currently suspended SELECT CURRENT_WAREHOUSE();
What happens when the SELECT query runs?
Solution
Step 1: Understand auto-resume behavior
With AUTO_RESUME = TRUE, the warehouse starts automatically when a query runs.Step 2: Apply to the SELECT query
The warehouse is suspended but will resume automatically before executing the SELECT.Final Answer:
The warehouse automatically resumes and the query runs successfully -> Option AQuick Check:
Auto-resume starts warehouse on query run [OK]
- Assuming query fails if warehouse is suspended
- Thinking warehouse stays suspended during query
- Believing query returns NULL when warehouse resumes
AUTO_SUSPEND = 0 and AUTO_RESUME = TRUE on a warehouse. What issue might occur?Solution
Step 1: Understand AUTO_SUSPEND = 0 meaning
Setting AUTO_SUSPEND to 0 disables auto-suspend, so warehouse stays running.Step 2: Consider AUTO_RESUME effect
AUTO_RESUME = TRUE allows auto-start but does not suspend warehouse automatically.Final Answer:
The warehouse never suspends, causing continuous charges -> Option DQuick Check:
AUTO_SUSPEND=0 disables suspend, warehouse runs always [OK]
- Thinking AUTO_SUSPEND=0 suspends immediately
- Assuming warehouse suspends after default time
- Believing warehouse cycles suspend/resume every second
Solution
Step 1: Choose auto-suspend time for 5 minutes
5 minutes equals 300 seconds, so AUTO_SUSPEND = 300 is correct.Step 2: Enable auto-resume for automatic start
Setting AUTO_RESUME = TRUE ensures warehouse starts when queries run.Final Answer:
Set AUTO_SUSPEND = 300 and AUTO_RESUME = TRUE -> Option BQuick Check:
5 min suspend + auto-resume = AUTO_SUSPEND=300 & AUTO_RESUME=TRUE [OK]
- Using 0 for AUTO_SUSPEND disables suspend
- Disabling AUTO_RESUME causes manual start
- Setting suspend time too short or too long
Ready to prove it?
Pass the test and this pattern moves unknown
