Documentation forSolarWinds Observability SaaS

Investigate blocking events

SolarWinds Observability SaaS captures blocking events for monitored SQL Server database instances. The Blocking view provides detailed visibility into blocked sessions, blocking chains, wait durations, and recurring contention patterns. Use this view to investigate questions such as:

  • Which sessions are repeatedly blocked, and for how long?

  • Which applications, hosts, or users are most frequently involved in blocking chains?

  • Which database resources and wait types are causing contention?

  • Which queries are sitting at the head of blocking chains?

  • Are total block counts or total/average wait times trending upward over time?

See the following sections:

Access the Blocking view

The Blocking view is accessible from two contexts that differ in scope and chart aggregation behavior. In both contexts, the Blocking Events grid displays captured blocking events for the selected time range.

If no events are displayed, verify the selected time range and confirm that blocking event collection is available for the selected database type.

View all blocking events

From the Databases index page:

  1. Open Databases.

  2. Click Locking.

  3. Click Blocking.

In this context, the Blocking view shows events across all monitored SQL Server database instances in the organization. Blocking charts aggregate metrics by database instance. The Database Instance column is visible in the event grid.

View blocking event for a specific database instance

From a database instance details page:

  1. Open Databases and select a specific SQL Server database instance.

  2. Click Locking.

  3. Click Blocking.

In this context, the Blocking view is scoped to the selected database instance only. Blocking charts aggregate metrics by application. The Database Instance column is hidden in the event grid since all events belong to the same instance.

Inspect blocking events in the grid

The grid displays one row per captured blocking event. Each event represents a blocking chain at a point in time, with the head blocker displayed as the top-level row. Blocked sessions are shown as indented child rows under their parent blocker.

Expand a head-blocker row to reveal all blocked sessions in the chain. Child rows are indented to reflect the blocking relationship hierarchy.

The following columns are available. Use the column picker to show or hide individual columns to suit your investigation workflow.

Column Description
SPID Displays the SQL Server session ID. For child rows, also shows the count of directly blocked sessions.
Query Text Displays the captured query text associated with the session.
Database Instance Displays the monitored database instance associated with the event.
Time Displays the timestamp of the blocking event.
Duration For head-blocker rows, displays the total cumulative wait duration across the entire blocking chain. For child rows, displays the individual session wait time.
Wait Type Displays the SQL Server wait type for the blocked session.
Wait Resource Displays the resource the blocked session is waiting on. For head-blocker rows, this is not applicable. For child rows, displays the wait resources of direct child sessions.
Application Displays the client application associated with the session.
Database Displays the database associated with the session.
Origin Displays the host name associated with the session.
User Displays the login name associated with the session.

Apply filters and sort blocking events

Use the filter toolbar to narrow blocking events by database instance using the global search filter.

Use column sorting to:

  • Review the longest-duration blocking events first

  • Identify the most recent events

  • Group events by application, database, origin host, or user

  • Locate specific wait types or wait resources across multiple events

View the blocking chain tree

The blocking chain tree shows the full hierarchy of a blocking event: the head-blocker session at the top level and all directly or transitively blocked sessions as indented child rows.

In the head-blocker row:

  • Duration displays the total cumulative wait time across all sessions in the chain.

  • Wait Resource is not applicable (the head blocker is not itself waiting).

  • SPID shows the count of directly blocked sessions.

In the child session rows:

  • Duration displays the individual session wait time in milliseconds, displayed in seconds.

  • Wait Resource displays the resource the session is waiting on.

  • Expand icon indicates further nested blocked sessions.

Click a head-blocker row to expand or collapse its child sessions.

Use the chain tree to:

  • Determine which session is the root cause of the blocking.

  • Understand the scope and depth of the blocking chain.

  • Identify which resources are being contested.

  • Review query text for the blocking and blocked sessions.

Analyze blocking charts

The Blocking view includes three metric charts rendered above the blocking event grid. All three charts are horizontal stacked bar charts. Each bar segment represents a distinct entity (database instance or application), colored consistently with the chart legend.

The top five contributors by value are shown in each chart.

Blocking charts on the Databases index page

When accessed from the Databases index page, all charts aggregate metrics by database instance.

Chart Metric Description
Total Blocks by Database Instance dbo.blocking_events.by_db.count (sum) Total count of blocking events per database instance over the selected time range.
Total Time by Database Instance dbo.host.queries.blocked.wait_time_us (sum) Total cumulative wait duration of blocked queries per database instance.
Average Time by Database Instance composite.dbo.host.dbs.wait_time_us_avg (avg) Average wait duration per blocking event per database instance.

Use these charts to compare blocking load across multiple database instances and identify which instances are experiencing the most contention.

Blocking charts on the database instance details page

When accessed from within a specific database instance, all charts aggregate metrics by application (client program name).

Chart Metric Description
Total Blocks by Application dbo.blocking_events.by_app.count (sum) Total count of blocking events per application over the selected time range.
Total Time by Application dbo.host.queries.blocked.wait_time_us (sum) Total cumulative wait duration of blocking queries per application.
Average Time by Application composite.dbo.host.program.wait_time_us_avg (avg) Average wait duration per blocking event per application.

Use these charts to identify which client applications are causing the most blocking activity within a specific database instance and prioritize workloads for remediation.

Reading the charts

  • Total Blocks displays a count (no unit). Higher values indicate more frequent blocking activity.

  • Total Time and Average Time display duration values formatted in human-readable units.

Use the charts to:

  • Identify which database instances or applications generate the most blocking activity.

  • Detect elevated block counts or wait durations within the selected time range.

  • Compare blocking load across instances (index page) or across applications within an instance (details page).

  • Correlate blocking spikes with workload patterns, deployments, or maintenance windows.

Use the global database filter with the Blocking view

When a global database filter search query is active (entered in the search bar on the Databases index page), the Blocking view automatically restricts results to matching database instances.

If the global filter is loading, a page loader is displayed until the filter resolves.

If the global filter produces no matching database instances, the message No Matching Entities is displayed.

If the global filter query fails, the message Unknown Error is displayed.

This behavior ensures that blocking events shown in the grid and charts are scoped to the same database instances visible in the rest of the Databases view.

Investigate and mitigate recurring blocking

Use the following workflow to investigate recurring blocking events:

  1. Review a broader time range to confirm event frequency and trend direction using the Total Blocks and Total Time charts.

  2. Identify recurring patterns in the grid across SPID, application, database, wait type, wait resource, or query text.

  3. Expand blocking chains to identify the root head-blocker session and associated query text.

  4. Correlate blocking events with query-level analysis for sessions with available query detail links.

  5. Apply corrective actions and confirm that block counts and wait durations decrease over subsequent time ranges.

Repeated blocking involving the same sessions, applications, databases, or resources typically indicates ongoing concurrency issues rather than isolated contention events.

Common remediation strategies include:

  • Keep transactions short and commit changes promptly.

  • Avoid holding locks while performing slow operations such as user interaction or external calls.

  • Access shared resources in a consistent order across application code paths.

  • Improve indexing to reduce lock duration and lock escalation.

  • Reduce batch sizes for large update or delete operations.

  • Review and adjust transaction isolation levels where appropriate.

  • Implement retry handling for blocked operations where appropriate.

Notes

  • Blocking event visibility depends on collection configuration, data retention, and the selected time range.

  • The Blocking view is available only for SQL Server database instances. The Locking tab is hidden for other database types.

  • Use the related Deadlocks view when investigating deadlock events alongside blocking activity.