从 SQL Server 2005 和所有更高版本开始,企业版包括一个称为“快速恢复”的功能。
a) 快速恢复是否使用多个操作系统线程来执行“重做”操作?
b) SQL Server 是并行写入事务日志并产生多个线程,还是日志是按顺序写入的,因此只有一个线程用于写入事务日志?
从 SQL Server 2005 和所有更高版本开始,企业版包括一个称为“快速恢复”的功能。
a) 快速恢复是否使用多个操作系统线程来执行“重做”操作?
b) SQL Server 是并行写入事务日志并产生多个线程,还是日志是按顺序写入的,因此只有一个线程用于写入事务日志?
快速恢复允许数据库在 REDO 阶段完成后立即上线,然后再运行 UNDO。这可以通过锁定日志记录实现,该日志记录将事务应用的锁定记录在关联的日志记录中。
快速恢复读取将被 UNDONE 的日志记录,获取锁,然后使数据库联机。UNDO 处理可以在适当的时候进行,而其他数据库活动发生,因为将受到影响的资源受到锁的保护。有关血腥细节,请参阅 Paul Randal 的Lock logging 和 fast recovery post。
REDO 操作在少于 5 个内核的标准版和企业版上是单线程的。在具有 5 个以上内核的 Enterprise 上,每 4 个内核就有一个重做线程(参考)。据我所知,这与快速恢复功能是分开的且无关的。
在回答您的另一个问题时,单个线程负责事务日志写入。