PolarDB Physical Replication SMO Synchronization Mechanism

💡 原文英文,约1200词,阅读约需5分钟。
📝

内容提要

该文章讨论了在mtr中修改多个页面时可能出现的搜索操作错误的问题。通过引入sync_counter机制,可以避免错误,但会导致物理复制效率下降。作者提出了使用smo page queue或LogIndex SMO page queue的方法来解决这个问题,并减少store和restore操作。此外,还讨论了使用LogIndex和bw-tree的方法来解决非smo场景下的冲突问题。最后,作者提出了一些问题和可能的解决方案。

🎯

关键要点

  • 文章讨论了在mtr中修改多个页面时可能出现的搜索操作错误的问题。
  • 引入sync_counter机制可以避免错误,但会导致物理复制效率下降。
  • 使用smo page queue或LogIndex SMO page queue的方法可以解决问题并减少store和restore操作。
  • 讨论了使用LogIndex和bw-tree的方法来解决非smo场景下的冲突问题。
  • 现有的sync_counter机制在更新时需要持有index x lock,影响物理复制效率。
  • sync_counter机制可能导致频繁的store_position和restore_position操作,影响性能。
  • 提出了SMO page queue的方法,通过传递SMO page ID来减少不必要的操作。
  • LogIndex方法通过带上lsn信息来访问指定版本的Page,避免访问到不存在的Page。
  • bw-tree和LogIndex的区别在于内存中保存的Page版本不同。
  • Aurora和Socrate也存在类似的问题,使用getPage(lsn)协议可能导致访问到未来页。
  • 建议在RO smo page queue中允许读取future page。
  • sync_counter机制的本质原因是并行apply redo log时可能读取到中间状态,导致next_page不正确。
➡️

继续阅读