Symptoms
- Power BI and reports time out; simple queries take minutes before they start.
sys.dm_pdw_exec_requestsshows many requests inSuspendedstate waiting for resources.
1. Who's running and who's waiting?
SELECT r.request_id, r.status, r.submit_time, r.start_time, r.total_elapsed_time/1000 AS elapsed_s,
r.resource_class, r.group_name, r.importance, s.login_name, LEFT(r.command, 100) AS cmd
FROM sys.dm_pdw_exec_requests r
JOIN sys.dm_pdw_exec_sessions s ON r.session_id = s.session_id
WHERE r.status IN ('Running', 'Suspended')
ORDER BY r.status, r.submit_time;
-- What are queued requests waiting on?
SELECT w.request_id, w.type, w.state, w.object_name, w.priority
FROM sys.dm_pdw_waits w
JOIN sys.dm_pdw_exec_requests r ON w.request_id = r.request_id
WHERE r.status = 'Suspended';
Typical picture: a few loads running in a large resource class (or a workload group with high REQUEST_MIN_RESOURCE_GRANT_PERCENT) consume most of the pool's memory, so everything else waits.
2. Immediate relief
Kill the runaway request (after checking with its owner if possible):
KILL 'QID123456';
Pause less critical loads (ADF/Synapse pipelines) until BI traffic has recovered.
3. Isolate workloads properly
Create workload groups so loads can't starve reporting:
CREATE WORKLOAD GROUP wg_loads WITH (
MIN_PERCENTAGE_RESOURCE = 30, CAP_PERCENTAGE_RESOURCE = 60,
REQUEST_MIN_RESOURCE_GRANT_PERCENT = 10);
CREATE WORKLOAD GROUP wg_bi WITH (
MIN_PERCENTAGE_RESOURCE = 40, CAP_PERCENTAGE_RESOURCE = 100,
REQUEST_MIN_RESOURCE_GRANT_PERCENT = 2.5);
CREATE WORKLOAD CLASSIFIER wc_loads WITH (WORKLOAD_GROUP = 'wg_loads', MEMBERNAME = 'adf_loader', IMPORTANCE = NORMAL);
CREATE WORKLOAD CLASSIFIER wc_bi WITH (WORKLOAD_GROUP = 'wg_bi', MEMBERNAME = 'powerbi_svc', IMPORTANCE = HIGH);
Small grant percentages give more concurrency for short BI queries; loads get bigger grants but are capped. Check the minimum grant values allowed at your service level (DWU).
4. Scale if needed
az synapse sql pool update -g rg-syn --workspace-name syn-prod -n dwprod --performance-level DW1500c
Warning
Scaling cancels running queries and takes a few minutes. Use it when the queue is already blocking everything, and announce it.
5. Fix the long-running queries
Common causes in dedicated pools:
- Data movement (
ShuffleMoveOperation,BroadcastMoveOperation) from distribution mismatches — check withsys.dm_pdw_request_steps. - Missing or stale statistics:
UPDATE STATISTICS dbo.FactSales; - Poor columnstore quality after many small loads: rebuild indexes.
SELECT step_index, operation_type, location_type, status, total_elapsed_time, row_count
FROM sys.dm_pdw_request_steps WHERE request_id = 'QID123456' ORDER BY step_index;
Prevent it next time
- Workload groups and classifiers for every service account; no users in large static resource classes by default.
- Alerts on queued query count and wait times.
- Schedule heavy loads outside BI peak hours; consider result set caching for repeated dashboard queries.