redo日志与WAL的关系是什么

1.请问observer源码中,在写memtable之前会写redo日志吗?

2.如果会写redo日志,那么写redo的入口函数是什么?
我的理解是如何是写redo日志,那么应该是在写memtable之前,那么写redo的入口函数是什么或者是哪个模块。

3.ob中redo日志与传统的WAL之间的区别是什么?

望解答,谢谢。

1 个赞

@论坛小助手

  1. redo日志与WAL的关系:WAL(Write-Ahead Logging)是一种用于提高数据库可靠性的技术,它要求所有对数据库的修改在被应用到实际数据之前,都要先记录到日志文件中。redo日志是WAL机制的一部分,专门用于记录数据库中的数据变更操作。在数据库重启后,通过重放redo日志,可以将数据库恢复到最近一次提交的状态。
  2. Observer源码中,在写memtable之前会写redo日志。这是为了确保数据的持久性和一致性,即使在写入memtable时发生故障,也可以通过重放redo日志来恢复数据。
  3. 写redo日志的入口函数可能位于ObTxSeq或ObRowWriter类中,具体的函数名可能类似于write_redo_log或log_redo_entry。
  4. OB中redo日志与传统WAL的区别:OceanBase采用了多副本机制,每个副本都有独立的redo日志。OceanBase使用Paxos协议来保证多个副本之间的数据同步。OceanBase的redo日志存储机制经过优化,可以高效地处理大规模数据写入,减少I/O开销。