At a glance
An alert that fires when a Snowflake warehouse holds more than 5 queries waiting in its queue for a sustained 10-minute window. Queueing is Snowflake’s pressure-release valve: when more queries arrive than a warehouse can run concurrently, the extra ones wait rather than fail. A little queueing under a burst is normal. Sustained queueing means the warehouse is structurally undersized for its workload, every queued query is a user or dashboard waiting, and the fix is to upsize the warehouse or enable multi-cluster scaling.
Calculation
Snowflake queues a query when its target warehouse has no free slot to run it. There are two flavours of queue time, and the card reads both:QUEUED_OVERLOAD_TIME: the query waited because the warehouse was already running at its concurrency limit. This is the demand-vs-capacity signal and the one that matters here.QUEUED_PROVISIONING_TIME: the query waited while Snowflake spun up additional compute (cold start or cluster add). This is usually brief and expected.
BI_WH does nothing for a queue on TRANSFORM_WH. The 10-minute sustain requirement is deliberate. A scheduled batch kicking off, or a dashboard with twenty panels all firing at once, can spike the queue for a minute and drain naturally. Paging on that would be noise. A queue that stays above 5 for ten minutes is not a burst, it is the warehouse failing to keep up with steady demand, which is exactly the structural problem the card exists to surface. The historic backing numbers (QUEUED_OVERLOAD_TIME summed per query) let you confirm after the fact how much aggregate wait time the queue cost.
Worked example
A platform team runsBI_WH, a Medium warehouse single-cluster, serving a fleet of ecommerce dashboards used by merchandising, ops, and finance. At 09:00 on 05 May 26 the working day starts and everyone opens their boards at once. Snapshot of BI_WH across the 09:00 to 09:10 window:
Queue depth held at 11 for the full ten minutes, so the alert fired at 09:06. The picture is unambiguous: the warehouse is pinned at its concurrency limit and a backlog is building rather than draining. The on-call platform engineer acts in order:
- Confirm it is overload, not provisioning. The queued queries show
QUEUED_OVERLOAD_TIME, not provisioning time, so this is genuine demand exceeding capacity, not a cold start. Confirmed. - Choose the right lever. Two options: scale up (bigger warehouse, more concurrency per cluster) or scale out (enable multi-cluster so Snowflake adds clusters under load and removes them when it drains). For a spiky BI workload that is busy at 09:00 and quiet by 09:30, scale out is the better fit: set
BI_WHto multi-cluster withMIN_CLUSTER_COUNT = 1,MAX_CLUSTER_COUNT = 3,SCALING_POLICY = STANDARD. - Apply and watch the drain. After enabling multi-cluster, Snowflake adds a second cluster within seconds, running capacity roughly doubles, and the queue should fall below 5 within a couple of minutes. The card auto-resolves when depth drops under threshold for the window.
- Right-size the ceiling, not just the floor. Multi-cluster only adds clusters up to
MAX_CLUSTER_COUNT. If the queue returns, raise the max or move the heaviest dashboards to their own warehouse.
Sibling cards
Reconciling against the source
Where to look in Snowflake:A representative reconciliation query:SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORYcarriesQUEUED_OVERLOAD_TIMEandQUEUED_PROVISIONING_TIMEper query; sum overload time per warehouse over the window to confirm aggregate wait.SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_LOAD_HISTORYreportsAVG_RUNNINGandAVG_QUEUED_LOADper warehouse over 5-minute intervals, the closest native equivalent to this card’s queue depth. Snowsight, Admin to Warehouses to (warehouse) to Warehouse Activity for the managed-service console view of running vs queued load over time.
Cross-connector reconciliation:
Known limitations / FAQs
Some queueing is normal. Why page on it at all? Brief queueing during a burst is healthy: it means the warehouse is busy and Snowflake is protecting it from thrashing. The card does not page on a burst. It pages only when depth holds above 5 for a sustained 10 minutes, which is no longer a burst, it is a backlog that will not drain on its own. That is the signal that the warehouse is structurally undersized for its steady demand. Should I scale up (bigger warehouse) or scale out (multi-cluster)? It depends on the load shape. Spiky, predictable load (a 09:00 dashboard rush, a nightly batch) is best served by multi-cluster scale-out: Snowflake adds clusters under load and removes them when the queue drains, so you only pay for the extra compute while it is needed. Uniformly heavy load that runs all day is better served by scaling up to a larger size. The queue source helps: pureQUEUED_OVERLOAD_TIME means concurrency pressure, which multi-cluster fixes directly.
The queue cleared by itself before I could act. Did the alert misfire?
Possibly not. If the breach held for the full 10-minute window it was a real sustained queue; a workload finishing naturally afterwards does not make the preceding ten minutes of user wait less real. If it cleared inside the window, the sustain guard should have kept the alert quiet, so a fire on a sub-10-minute queue is worth checking against the Alert Rules tab settings.
Does queueing cost extra credits?
Queued time itself is not billed: a query waiting in the queue is not consuming compute. The cost shows up two ways instead. First, the remedy (upsizing or adding clusters) costs credits while active. Second, sustained queues often coincide with a warehouse running flat-out, which is the credit cost. Cross-check Credits by Warehouse (7d).
One warehouse queues constantly but the others are idle. What is the fix?
This is a workload-isolation problem. A single warehouse is absorbing demand it cannot handle while capacity sits unused elsewhere. The clean fix is to split the workload: give the heavy consumer (a busy BI tool, a heavy transform) its own appropriately sized warehouse rather than upsizing a shared one. Snowflake’s per-warehouse billing makes this cheap, you only pay for each warehouse while it runs.
Provisioning queue keeps showing up on a warehouse that auto-suspends aggressively. Is that this alert?
Usually not. Aggressive auto-suspend means the warehouse keeps cold-starting, which shows as QUEUED_PROVISIONING_TIME, not overload. This card focuses on overload queueing. If provisioning wait is your pain, the remedy is the opposite of capacity: lengthen auto-suspend slightly so the warehouse stays warm between closely spaced queries. Check Idle Warehouse Credits Wasted (24h) to balance the trade-off.