
Although the main redo thread stops executing individual transaction log redo operation, it is responsible for enumerating and dispatching each transaction log to its parallel redo worker threads.However parallel redo, which enables multi-threading model, has an associated cost. It further speeds up the redo performance. Moreover, indirect checkpoint allows parallel redo to offload more disk IO (and IO waits for slow disk) to its helper worker thread and frees main redo thread to enumerate more received log records in secondary replica. When the transaction redo operation is CPU intensive, such as when data encryption and/or data compression are enabled, parallel redo has even higher redo throughput ( Redone Bytes/sec ) compared to serial redo.

With the new parallel redo model that is the default setting since SQL Server 2016, workloads with highly concurrent small transactions are expected to achieve better redo performance. This new redo model is called parallel redo. In addition, each database has a new helper worker thread for handling the dirty page disk flush IO.

In SQL Server 2016, the redo model was enhanced with multiple parallel redo worker threads per database to share the redo workload. This redo model is also called as serial redo. When availability group was initially released with SQL Server 2012, the transaction log redo was handled by a single redo thread for each database in an AG secondary replica.
