HADR_NOTIFICATION_DEQUEUE SQL Server Wait Type

Wait Type HADR_NOTIFICATION_DEQUEUE

The wait type HADR_NOTIFICATION_DEQUEUE is ranked #244 by Stedman Solutions and Database Health Monitor.

Wait statistics, in the context of SQL Server, refer to the amount of time that a query spends waiting to access data in the database. When a client application requests data from the database, the request is placed in a queue and the client application must wait for its turn to access the data. The time that the query spends waiting is called a "wait" and is tracked by SQL Server. This information can be used to identify potential performance bottlenecks and optimize the performance of the database. Wait statistics are commonly used by database administrators to diagnose and troubleshoot performance issues in SQL Server.


SQL Server uses wait types to provide insights into the processes that may be slowing down performance. One such wait type, HADR_NOTIFICATION_DEQUEUE, is specific to Always On Availability Groups. This wait type appears when SQL Server is waiting for messages or notifications from the Always On HADR (High Availability and Disaster Recovery) system. In this blog post, we’ll explain what the HADR_NOTIFICATION_DEQUEUE wait type means, when it occurs, and how to address it effectively.

What Is the HADR_NOTIFICATION_DEQUEUE Wait Type?

The HADR_NOTIFICATION_DEQUEUE wait type occurs when a thread in SQL Server is waiting for a notification or message related to Always On Availability Groups. These notifications are used to coordinate activities like synchronization, failovers, and health monitoring between the primary and secondary replicas.

This wait type is generally benign and indicates that the system is idle, waiting for the next action or event to occur. However, excessive or prolonged waits might indicate underlying issues with the Always On environment.

When Does HADR_NOTIFICATION_DEQUEUE Appear?

This wait type typically occurs in the following scenarios:

  • Replica Synchronization – When replicas are waiting for updates or changes to propagate between the primary and secondary replicas.
  • Health Monitoring – During regular checks to ensure replicas are healthy and can participate in failover scenarios.
  • Failover Coordination – When replicas are exchanging notifications as part of a planned or automatic failover.
  • Idle Periods – When there is little or no activity in the Always On system, SQL Server may record this wait type as it waits for the next notification.

Why HADR_NOTIFICATION_DEQUEUE Waits Matter

In most cases, HADR_NOTIFICATION_DEQUEUE waits are normal and indicate that the system is waiting for the next event to process. However, if these waits are frequent or prolonged, they may indicate issues such as:

  • Network Latency – Delays in communication between replicas due to high network latency or unreliable connections.
  • Replica Configuration Problems – Misconfigurations in the Always On setup can lead to inefficient notification handling.
  • Resource Bottlenecks – High CPU, memory, or disk utilization on the primary or secondary replicas can delay processing of notifications.
  • Synchronization Issues – Problems with log synchronization between replicas may cause delays in notification processing.

How to Address HADR_NOTIFICATION_DEQUEUE Waits

If HADR_NOTIFICATION_DEQUEUE waits are causing concern, consider these strategies to resolve potential issues:

  • Monitor Network Performance – Ensure low latency and high bandwidth connections between all replicas. Use tools to test and monitor network performance regularly.
  • Validate Always On Configuration – Review the configuration of your Availability Group to ensure it is set up correctly, including endpoints, failover modes, and synchronization settings.
  • Optimize Resource Utilization – Check for high CPU, memory, or disk utilization on all replicas. Address any bottlenecks by upgrading hardware or optimizing workloads.
  • Monitor Synchronization Status – Use views like sys.dm_hadr_database_replica_states to monitor the health and synchronization status of your replicas.
  • Review Workloads – Ensure that workloads are balanced across replicas to prevent resource contention on the primary or secondary replicas.

Monitoring HADR_NOTIFICATION_DEQUEUE Waits

To monitor HADR_NOTIFICATION_DEQUEUE waits, use SQL Server tools like sys.dm_os_wait_stats to track wait statistics. Additionally, the Always On Dashboard and dynamic management views such as sys.dm_hadr_availability_replica_states and sys.dm_hadr_cluster provide valuable insights into the health and performance of your Availability Group.

Conclusion

The HADR_NOTIFICATION_DEQUEUE wait type in SQL Server is a normal part of the Always On Availability Groups system, indicating that the system is waiting for notifications to process. While these waits are typically harmless, prolonged or frequent waits can signal issues with network performance, replica configurations, or resource utilization. By monitoring your Always On environment, optimizing workloads, and ensuring proper configuration, you can minimize these waits and maintain a healthy SQL Server environment.

If you need expert assistance with Always On Availability Groups, SQL Server performance tuning, or resolving wait types, Stedman Solutions offers managed services to help you achieve optimal performance and reliability.


Watch on YouTube


Find out more about our SQL Server Managed Services

Applies to

    Related Waits

    HADR_AG_MUTEX
    HADR_AR_CRITICAL_SECTION_ENTRY
    HADR_AR_MANAGER_MUTEX
    HADR_AR_UNLOAD_COMPLETED
    HADR_ARCONTROLLER_NOTIFICATIONS_SUBSCRIBER_LIST
    HADR_BACKUP_BULK_LOCK
    HADR_BACKUP_QUEUE
    HADR_CLUSAPI_CALL
    HADR_COMPRESSED_CACHE_SYNC
    HADR_CONNECTIVITY_INFO
    HADR_DATABASE_FLOW_CONTROL
    HADR_DATABASE_VERSIONING_STATE
    HADR_DATABASE_WAIT_FOR_RESTART
    HADR_DATABASE_WAIT_FOR_TRANSITION_TO_VERSIONING
    HADR_DB_COMMAND
    HADR_DB_OP_COMPLETION_SYNC
    HADR_DB_OP_START_SYNC
    HADR_DBR_SUBSCRIBER
    HADR_DBR_SUBSCRIBER_FILTER_LIST
    HADR_DBSEEDING
    HADR_DBSEEDING_LIST
    HADR_DBSTATECHANGE_SYNC
    HADR_FABRIC_CALLBACK
    HADR_FILESTREAM_BLOCK_FLUSH
    HADR_FILESTREAM_FILE_CLOSE
    HADR_FILESTREAM_FILE_REQUEST
    HADR_FILESTREAM_IOMGR
    HADR_FILESTREAM_MANAGER
    HADR_GROUP_COMMIT
    HADR_LOGCAPTURE_SYNC
    HADR_LOGCAPTURE_WAIT
    HADR_LOGPROGRESS_SYNC
    HADR_NOTIFICATION_WORKER_EXCLUSIVE_ACCESS
    HADR_NOTIFICATION_WORKER_STARTUP_SYNC
    HADR_NOTIFICATION_WORKER_TERMINATION_SYNC
    HADR_PARTNER_SYNC
    HADR_READ_ALL_NETWORKS
    HADR_RECOVERY_WAIT_FOR_CONNECTION
    HADR_RECOVERY_WAIT_FOR_UNDO
    HADR_REPLICAINFO_SYNC
    HADR_SYNC_COMMIT
    HADR_SYNCHRONIZING_THROTTLE
    HADR_TDS_LISTENER_SYNC
    HADR_TDS_LISTENER_SYNC_PROCESSING
    HADR_TIMER_TASK
    HADR_TRANSPORT_DBRLIST
    HADR_TRANSPORT_FLOW_CONTROL
    HADR_TRANSPORT_SESSION
    HADR_WORK_POOL
    HADR_WORK_QUEUE
    HADR_XRF_STACK_ACCESS

    See Also


    All Wait Types
    HADR_NOTIFICATION_DEQUEUE SQL Server Wait Type