PARALLEL_REDO_WORKER_WAIT_WORK

(Republishing, or using this info in a commercial product/website, is prohibited without permission. All other uses are permitted. If in doubt, please ask.)

(Back to main page…)

Description:

This wait type is when one of the parallel threads performing redo for an Availability Group replica is waiting for some work to do. This commonly occurs because there is actually no log being generated on the primary replica, but could also (rarely) be because the main parallel redo thread cannot dispatch log records for redo as fast as the other threads can perform the redo. This wait is part of normal parallel redo operations.

(Books Online description: N/A)

Questions/comments on this wait type? Click here to send Paul an email, especially if you have any information to add to this topic.

Added in SQL Server version:

2016

Removed in SQL Server version:

This wait type is one that I usually filter out as a benign wait when doing wait statistics analysis as it is documented as not being indicative of a performance issue.

You can read more about parallel redo in this blog post.

Extended Events wait_type value:

The map_key value in sys.dm_xe_map_values is 1135 in 2016 RTM. After 2016 RTM, you must check the DMV to get the latest value as some map_key values have changed in later builds.

Other information:

I have not seen this wait type be a noticeable contention point. Although this wait type can be high on some systems, that just means there is a lot of time when there’s nothing for the redo threads to do.

Known occurrences in SQL Server (list number matches call stack list):

  1. Waiting for some work to be queued for redo

Abbreviated call stacks (list number matches known occurrences list):

  1. SOS_Task::PostWait+0x6f
    EventInternal<SuspendQueueSLock>::Wait+0x1f4
    ParallelRedoWorker::RedoWorkerLoop+0x38d
    ParallelRedoWorker::RedoWorkerEntryPoint+0xa2
    SOS_Task::Param::Execute+0x231
    SOS_Scheduler::RunTask+0xaa