REDO_THREAD_PENDING_WORK is an
AlwaysOn High Availability Wait Type which is without a HADR_ prefix. In most
cases, this wait type can be ignored as they are not very important to be
noticed. But it is good for all the DBAs to immediately identify the wait types
being generated in the SQL Server Instance.
What is REDO_THREAD_PENDING_WORK?
Inside an AlwaysOn Availability
Group, the REDO_THREAD_PENDING_WORK wait type occurs on the secondary replica.
Further, a wait type accumulates over a course of time in the server when
there is no work to be carried out. As we all are much aware that an AlwaysOn
Availability Group processes log records, hardens them on transaction logs, and then confirms the same to the primary replica. While using the synchronous mode, the
primary replica waits to commit on the client until a transaction commits in the secondary replica. Whereas, in the asynchronous mode, the commit message is sent
to the client without waiting for hardening on the secondary replica.
Until now, we have seen the internals of an AlwaysOn High Availability for a synchronous and
asynchronous mode. The REDO_THREAD_PENDING_WORK wait type comes to the picture
when there are any modifications inside the secondary replica log records. The
REDO thread does not impact the commit confirmation from the secondary replica.
Furthermore, this states that the secondary replica transactions may not the exact
same as the primary replica even after the transactions are committed on both sides.
At this point, you might think that the information could be lost during a failure. However, you must note a point that all the information will be recorded in the secondary replica logs. The Secondary replica will have all the information it requires to perform in the secondary replica log files. In case of a failure, the SQL Server will either redo or undo the internal processes from the transaction log.
The wait type occurs in secondary replica
because of accumulated wait time naturally. This can be monitored using a DMV
called sys.dm_os_wait_stats. This DMV can be used to fetch the waiting_tasks_count,
wait_time, max_wait_time, and signal_wait_time. All the durations mentioned from
the DMV will be in milliseconds.
select * from sys.dm_os_wait_stats where wait_type='REDO_THREAD_PENDING_WORK'
Note: In most cases, this wait type can be ignored.
0 comments:
Post a Comment