这句话怎么理解,1-1-1的架构中,一个客户端在一个事务中执行了一个insert语句,然后执行了commit语句,客户端收到提交成功是否一定要等三副本日志全部写入成功后才可以?
对于1-1-1的架构中,当一个客户端在一个事务中执行了一个INSERT语句,然后执行了COMMIT语句,客户端收到提交成功的确认确实需要等到三副本中的多数派(在这个场景下即至少两个副本)日志全部写入成功后才可以。这是因为OceanBase数据库使用Multi-Paxos协议确保多个副本间的Redo日志同步,对于事务层而言,一次Redo日志的写入只有同步到多数派副本上时才认为成功。这意味着即使在1-1-1架构下,也需要等待至少两个副本(包括Leader副本)确认日志写入成功后,才能向客户端返回事务提交成功的响应。
具体信息可参考以下文档:
1 个赞
客户端收到提交成功是一定要等三副本日志全部写入成功后才行
但是为什么截图上面说“事务的提交需要所有Redo日志都成功写入” ??
OceanBase 数据库遵循 WAL(Write-Ahead Logging)原则,即在事务提交前必须先将 Redo 日志持久化。Redo 日志记录了事务对数据的所有修改。只有当这些 Redo 日志成功写入后,事务才能被认为提交成功。这样即使在事务提交后发生宕机,系统也可以通过回放 Redo 日志恢复事务的修改,从而保证事务的修改不会丢失(即持久性)
小助手回复有问题
只要redo写入,就不会丢事务,就完成了所谓的领丢失,但是不一定被应用,所以跟随副本数据不一定是最新的,paxos协议只要超过半数redo写入就可以。1-1-1中2个写入了,就可以了。