Unravel launches free Snowflake native app Read press release

Snowflake

3 Proven Ways to Optimize Snowflake Warehouse Sizes

Over-provisioning warehouse sizes represents one of the largest sources of unnecessary cloud data platform spending. Organizations routinely run dashboard queries on Large warehouses when Small would deliver acceptable performance at 75 percent lower cost. Development environments […]

  • 10 min read

Over-provisioning warehouse sizes represents one of the largest sources of unnecessary cloud data platform spending. Organizations routinely run dashboard queries on Large warehouses when Small would deliver acceptable performance at 75 percent lower cost. Development environments consume production-scale compute resources for testing workloads that rarely justify the expense. Peak-hour warehouse configurations run unchanged through overnight periods when minimal compute capacity suffices.

Most queries perform adequately on smaller snowflake warehouse sizes than initially provisioned. The challenge lies in systematically identifying optimization opportunities across hundreds of queries and dozens of warehouses while maintaining performance requirements for time-sensitive workloads.

Three approaches address this challenge: workload separation matches query types to appropriate warehouse sizes, time-based scaling adjusts compute capacity to usage patterns throughout the day, and aggressive auto-suspend configuration ensures smaller warehouses only consume credits during active query execution.

Understanding Snowflake Warehouse Sizes and Cost Structure

Snowflake provides six standard warehouse sizes, each doubling in compute capacity and cost from the previous tier:

  • X-Small: 1 credit per hour
  • Small: 2 credits per hour
  • Medium: 4 credits per hour
  • Large: 8 credits per hour
  • X-Large: 16 credits per hour
  • 2X-Large: 32 credits per hour

This linear cost scaling creates significant optimization opportunities.

Moving from X-Large to Medium reduces warehouse costs by 75 percent. Downgrading from Large to Small delivers the same 75 percent cost reduction. The key question becomes whether the performance trade-off justifies staying on the larger warehouse size.

Snowflake warehouse sizing decisions impact more than just query speed. Warehouse size determines the number of compute clusters available for processing, the amount of memory allocated for operations, and the degree of parallelism possible for complex queries. Larger snowflake warehouse sizes excel at scanning massive datasets quickly, handling highly concurrent workloads, and processing complex analytical queries with multiple joins and aggregations. But many workloads do not require that level of computational power.

Simple SELECT statements against small tables complete in milliseconds regardless of warehouse size.

Dashboard queries pulling pre-aggregated data perform acceptably on Small warehouses even when they might run slightly faster on Large. Development and testing environments rarely justify production-scale warehouse sizes. The challenge lies in matching workload requirements to appropriate snowflake warehouse sizes without over-provisioning.

Snowflake’s flexible architecture makes this possible through several mechanisms. Warehouses can be created, modified, and destroyed programmatically. Auto-suspend ensures warehouses only consume credits during active use. Multi-cluster warehousing handles variable concurrency without requiring permanently large warehouse sizes. Understanding these capabilities allows teams to optimize snowflake warehouse sizes strategically rather than defaulting to oversized configurations. The three strategies below leverage Snowflake’s architecture to reduce costs while maintaining acceptable performance characteristics.

Strategy 1: Workload Separation Across Different Warehouse Sizes

Most organizations run diverse query patterns on Snowflake – ETL jobs processing millions of rows, analyst queries exploring data interactively, dashboard refreshes pulling summary metrics, and development work testing new transformations.

Running all these workloads on a single Large warehouse means paying Large warehouse rates for queries that would perform fine on X-Small. Workload separation solves this by matching snowflake warehouse sizes to actual computational requirements. The first optimization approach involves creating dedicated warehouses sized appropriately for distinct workload categories.

Time-critical production ETL that must complete within specific windows requires sufficient compute resources and justifies larger warehouse sizes. These jobs often scan terabytes of data, perform complex transformations, and feed downstream systems with strict SLAs. A Large or X-Large warehouse makes sense here.

Interactive analytics represents the middle tier.

Data analysts exploring datasets, running aggregations, and building reports need reasonable query performance but rarely require sub-second response times. Medium warehouses typically handle this workload well, providing enough compute for complex analytical queries while costing half as much as Large.

Operational queries form the third category:

  • Simple lookups
  • Dashboard refreshes
  • Monitoring queries accessing small datasets with predictable patterns

A Small or even X-Small warehouse delivers adequate performance at a fraction of the cost of larger options. Development and testing environments represent the most over-provisioned category in most Snowflake deployments. Developers do not need production-scale compute for testing queries, validating transformations, or exploring sample datasets. An X-Small warehouse suffices for development work, cutting costs by 87 percent compared to Medium and 93 percent versus Large.

Implementing workload separation requires creating multiple warehouses with appropriate snowflake warehouse sizes and directing queries to the right warehouse for their workload type.

Snowflake makes this straightforward through warehouse specification in connection strings, default warehouse settings per user or role, and programmatic warehouse selection in ETL orchestration. The cost impact compounds across multiple workload categories. Consider an organization running 100 dashboard queries daily on an X-Large warehouse (16 credits per hour). Each query completes in five seconds, totaling about seven minutes of daily compute time – that is 1.87 credits per day for dashboard workloads alone. Moving those queries to a Small warehouse (2 credits per hour) where they complete in eight seconds instead of five reduces daily consumption to 0.27 credits.

Annual savings from this single workload category exceed 580 credits.

Most organizations have dozens of similar optimization opportunities across their query mix. Workload separation also improves resource allocation predictability. When ETL jobs and interactive analytics compete for resources on a shared warehouse, performance becomes unpredictable. Separating workloads onto appropriately sized dedicated warehouses ensures each workload type receives consistent performance matching its requirements.

Strategy 2: Time-Based Warehouse Scaling

Compute requirements vary throughout the day and week.

Business hours bring high query concurrency and strict performance expectations. Overnight batch processing may require large warehouse sizes but minimal concurrency. Weekend usage often drops to near zero except for scheduled maintenance tasks. Time-based scaling adjusts snowflake warehouse sizes to match these patterns, running larger warehouses during peak demand and smaller warehouses during off-hours.

Performance stays strong when it matters. Costs drop during low-utilization periods.

Snowflake supports dynamic warehouse resizing through ALTER WAREHOUSE commands. Warehouses can be scaled up or down without losing their cache, though queries running during the resize will be queued briefly – this makes scheduled scaling practical for predictable usage patterns. A typical pattern involves running Medium warehouses during business hours (8 AM to 6 PM) when analysts actively query the system, then scaling down to Small overnight when only scheduled jobs execute.

If those jobs complete acceptably on Small warehouses, this saves four credits per hour for 14 hours daily. That is 56 credits per day.

Some organizations implement more granular time-based scaling:

  • Morning hours: Large warehouses as teams run reports and dashboards at day start
  • Mid-day: Medium as interactive query volume decreases
  • Late afternoon: Small as teams shift to meetings and analysis
  • Overnight: X-Small for minimal scheduled maintenance

Snowflake’s query history provides detailed information about when queries execute, how long they run, and which warehouses they use. Analysis of this data reveals the true peaks and valleys in compute requirements. Watch for usage patterns that do not match your current snowflake warehouse sizes. A warehouse that sits idle for hours still costs nothing thanks to auto-suspend, but a warehouse consistently under-utilized during peak hours suggests the peak sizing is too large.

Evidence of queuing during specific time windows indicates the warehouse size is insufficient for that period’s workload.

Time-based scaling works best when combined with automation. Manually resizing warehouses twice daily creates operational overhead and risks being forgotten. Scheduled tasks through Snowflake’s task scheduling, external orchestration tools, or cloud automation platforms can handle scaling automatically based on predefined schedules. Consider pairing time-based scaling with workload separation for maximum impact.

Your ETL warehouse might scale from X-Large during overnight batch processing to Medium during daytime for ad-hoc data engineering work.

Your analytics warehouse could run Large during business hours but drop to Small for evening and weekend use. Each workload category can follow its own optimal scaling pattern. The performance impact of time-based scaling is typically minimal because scaling happens during low-demand periods when query performance expectations are relaxed. Overnight batch jobs that complete in 35 minutes on Small versus 30 minutes on Medium rarely justify the extra cost. Dashboard refreshes at 6 AM that take 10 seconds instead of 6 seconds do not impact user experience.

Stop wasting Snowflake spend—act now with a free health check.

Request Your Health Check Report

Strategy 3: Aggressive Auto-Suspend for Smaller Warehouses

The third optimization strategy focuses on auto-suspend configuration, particularly for smaller snowflake warehouse sizes. Auto-suspend determines how quickly an idle warehouse shuts down to stop consuming credits. The default 10-minute setting makes sense for larger warehouses where startup costs are higher, but smaller warehouses benefit from much more aggressive auto-suspend policies.

Snowflake warehouse sizing interacts with auto-suspend economics in important ways. Starting a warehouse incurs minimal overhead regardless of size – typically one to two seconds for the warehouse to become available. But the cost of keeping a warehouse running varies dramatically by size. An idle X-Large warehouse costs 16 credits per hour. An idle X-Small costs one credit per hour.

The break-even point for auto-suspend differs by warehouse size. For an X-Large warehouse, keeping it running through a 5-minute gap between queries costs 1.33 credits. For an X-Small, the same 5-minute idle period costs only 0.08 credits. The X-Small can afford to shut down and restart multiple times for the same cost as keeping the X-Large running once.

Setting aggressive auto-suspend on smaller warehouses – 30 seconds to 2 minutes – ensures they only consume credits during actual query execution. For development warehouses, dashboarding systems, or any workload with sporadic query patterns, this dramatically reduces total credit consumption without impacting user experience.

Consider a development warehouse used intermittently throughout the day. A developer runs a query, examines results for several minutes, modifies code, and runs another query. With a 10-minute auto-suspend, the warehouse runs continuously through these gaps, consuming credits during think time. With a 60-second auto-suspend? The warehouse shuts down between queries, cutting credit consumption by 80 percent or more.

The same principle applies to dashboard and reporting workloads. Users typically interact with dashboards in bursts – loading a page, reviewing visualizations, drilling into details. Even with multiple concurrent users, gaps of several minutes often occur between query executions. Aggressive auto-suspend on Small or X-Small warehouses serving these workloads ensures credits are only consumed for actual data retrieval, not idle capacity.

Larger snowflake warehouse sizes warrant more conservative auto-suspend settings. The startup delay, while minimal in absolute terms, becomes more noticeable for users expecting immediate response from production systems. Query compilation and optimization benefits from warm caches that are lost when warehouses suspend. And the credit cost of running slightly longer is less significant for workloads already requiring large warehouse sizes.

A practical auto-suspend strategy involves setting different suspend times based on both warehouse size and workload characteristics:

  • X-Small and Small warehouses for development or dashboarding: 30-60 second auto-suspend (these workloads tolerate brief startup delays, and the credit savings from aggressive suspension are substantial)
  • Medium warehouses for interactive analytics: 2-5 minute auto-suspend (balances credit efficiency with user experience for moderately sized warehouses serving concurrent analysts)
  • Large and X-Large warehouses for production ETL: 5-10 minute auto-suspend (these workloads justify the warehouse size and typically run continuously during active periods, making aggressive suspension less valuable)

Auto-suspend optimization compounds with the other two strategies. Workload separation creates more opportunities for aggressive auto-suspend because purpose-built warehouses have predictable idle patterns. Time-based scaling makes auto-suspend more effective because warehouses sized appropriately for current demand suspend and restart more efficiently than over-provisioned warehouses would.

Enterprise Visibility Challenges With Warehouse Sizing

Implementing these three optimization strategies requires visibility into warehouse utilization patterns that standard Snowflake monitoring provides foundational metrics for, but connecting these to actionable warehouse sizing decisions requires additional intelligence at enterprise scale.

The fundamental problem? Connecting warehouse size to actual workload requirements across hundreds or thousands of queries.

A warehouse might show 40 percent average utilization, but is that because queries consistently use 40 percent of capacity, or because some queries max out resources while others barely use any? Should you downsize the warehouse, or would that create performance problems for the resource-intensive queries?

Query-level attribution becomes critical. Which specific queries would be impacted by moving from Large to Medium warehouse sizes? How much would their runtime increase? Are those queries time-sensitive, or would slightly longer execution be acceptable? While Snowflake’s monitoring excels at aggregate warehouse metrics, mapping individual queries to optimal warehouse sizes requires analyzing patterns across query history, workload types, and business context.

Workload classification presents another visibility gap. The three strategies described above depend on accurately categorizing queries into workload types – ETL, analytics, dashboards, development. Snowflake tracks which user ran which query, but determining that a query represents “dashboard refresh” versus “exploratory analytics” requires analyzing query patterns, execution frequency, and business context that is not captured in system tables.

Cost-benefit analysis at scale requires comparing current spending against optimized configurations. If you moved all development queries from Medium to X-Small warehouses, what would you save? If you implemented time-based scaling on your analytics warehouse, how would that impact monthly credit consumption? Answering these questions manually means extensive query history analysis, usage pattern identification, and cost modeling across multiple warehouse configurations.

The challenge intensifies in dynamic environments where workloads evolve continuously. A warehouse perfectly sized for last quarter’s workload might be over-provisioned today. New dashboard requirements might justify upgrading a Small warehouse to Medium. ETL jobs that previously needed Large might run acceptably on Medium after query optimization. Continuous monitoring and adjustment becomes necessary, but manual analysis does not scale.

Performance validation after implementing warehouse sizing changes adds another layer of complexity:

  • Did moving those dashboard queries to a smaller warehouse actually maintain acceptable performance?
  • Are any queries now queuing that were not before?
  • Have any jobs started missing SLA windows?

Organizations need closed-loop validation to ensure optimizations deliver expected cost savings without unacceptable performance degradation.

Multi-warehouse environments compound the visibility challenge. Large organizations run dozens of warehouses for different teams, workloads, and purposes. Each warehouse represents independent sizing, auto-suspend, and scaling decisions. Maintaining optimal configurations across this landscape manually becomes impractical, yet many optimization opportunities exist precisely in these distributed warehouse deployments.

Automated Warehouse Sizing Intelligence

Unravel’s FinOps Agent moves from insight to action. Rather than just identifying over-provisioned snowflake warehouse sizes, it automatically implements rightsizing based on actual usage patterns and configurable governance policies – all built natively on Snowflake system tables.

The FinOps Agent continuously analyzes query execution history to determine optimal warehouse sizes for different workload categories. It identifies queries running on over-provisioned warehouses where performance would remain acceptable on smaller sizes, calculates the cost savings from rightsizing, and automatically implements the changes based on your automation preferences.

You control the automation level based on your governance requirements:

  • Start conservative: Recommendations requiring manual approval to validate the agent’s sizing suggestions
  • Build confidence: Enable auto-approval for specific optimization types like development warehouse downsizing where risk is minimal
  • Scale automation: Implement full automation with governance guardrails for proven optimizations that consistently deliver results

The agent’s workload classification automatically categorizes queries into ETL, analytics, dashboard, and development workloads based on execution patterns, resource consumption, and query characteristics. This enables the workload separation strategy described earlier without manual query categorization. The system identifies which queries belong on which warehouse sizes and routes them accordingly.

For time-based scaling, the FinOps Agent detects usage patterns throughout the day and week, then implements optimal scaling schedules automatically. It identifies when warehouses are over-provisioned for current demand and scales them down, then scales back up before peak usage periods begin. Dynamic optimization adapts as workload patterns evolve without manual schedule management.

Auto-suspend optimization happens automatically based on warehouse size and workload characteristics. The agent sets aggressive auto-suspend for smaller warehouses serving sporadic workloads while maintaining appropriate suspend times for production warehouses requiring consistent availability. As warehouse sizes change through rightsizing, auto-suspend settings adjust automatically to match.

Organizations using Unravel’s automated warehouse sizing typically achieve 25-35 percent sustained cost reduction while maintaining or improving query performance. The optimization happens continuously – as new workloads emerge or existing patterns change, the FinOps Agent adapts warehouse configurations to maintain optimal efficiency. Teams report running 50 percent more workloads for the same budget after implementing automated warehouse sizing.

The system operates without requiring agents or external access to your Snowflake environment. Built on Snowflake system tables and using Delta Sharing or Direct Share for secure data access, the FinOps Agent maintains the security and governance standards required for enterprise data platforms while delivering continuous warehouse sizing optimization.

 
 

Other Useful Links