我遇到一个问题,索引重建导致同步 AG 辅助节点上出现较大的重做队列。
此问题仅发生在 1 个数据库上,该数据库与所有其他数据库之间的唯一区别是该数据库强制延迟了持久性。平均而言,所有数据库的数据文件大小范围为 300 到 600GB。
根据文档,我了解对于此数据库,无法保证事务持久性(例如重新启动或崩溃时),并且客户端在将日志记录写入主/辅助 AG 节点上的磁盘之前收到提交。
我的问题是 - 当日志最终刷新到主节点上的磁盘(通过持久事务或强制刷新命令)时,此时日志是否也会发送到辅助节点?那么实际上这是一大块记录并且可能是重做队列变大的原因?
更新:索引重建期间重做队列的建立仅持续约 20 秒(当强制延迟持久性时)。如果我将延迟持久性设置为关闭,那么在索引重建期间就不会建立重做队列。我想知道大块刷新(由于延迟的持久性)是否导致瞬时重做队列建立。
是的,这将会发生。
是的。
如果重做队列增长,可能是由于多种原因造成的。造成这种情况的原因不是延迟的持久性,而是因为正在发生大型索引重建,这会生成比相同时间内重做可以通过的日志更多的可发送日志。发送和重做是两个独立的项目,因为它们没有耦合。您可以查看重做线程以查看是否有任何可以调整的内容,但是,通过索引重建,这很正常,因此很可能是浪费时间。