3 个赞
不知道,坐等大佬回复
1 个赞
paxos协议啊
看官网文档
学习了
OceanBase 通过以下方式保证 Row Cache 的一致性:
1、LSM-Tree + MVCC 架构:缓存只读,版本分离,避免写时冲突。
2、Paxos 多副本同步:确保所有副本数据源一致,防止脏读。
3、事务快照机制:每个事务读取与其快照一致的行版本。
4、自动缓存失效:在数据合并或更新后自动重建缓存。
5、统一 Cache 框架管理:支持变长数据、热点迁移和租户级隔离。
理是这么个理,但集群规格小,事务又多,集群压力上来后,有时候还是存在脏读和不一致的情况的,我遇到过几次。1C4G
在 OceanBase 中,为了保证 Row Cache 的一致性,采取了如下措施:
- 同步缓存失效逻辑:当数据变更操作提交时,数据库引擎会同步调用缓存失效逻辑,准备删除 Row Cache 中的旧数据。然而,由于缓存失效操作可能需要一定的时间,这可能导致在 T4 到 T5 的时间段内,新的查询可能命中了旧缓存,从而返回旧值。
- 异步缓存失效:为了减少对性能的影响,OceanBase 采用了异步缓存失效机制。这意味着在数据变更操作提交后,缓存失效操作可能会稍有延迟。在这段时间内,如果有新的查询到来,可能会命中旧缓存。
- 最终一致性:尽管在 T4 到 T5 的时间内可能出现不一致的情况,但最终缓存会被失效或删除,后续的查询将能够拿到最新的数据。
- 多版本并发控制 (MVCC):OceanBase 使用 MVCC 来管理数据的一致性和并发控制。在缓存失效之前,查询可能会看到旧版本的数据,但在缓存失效后,查询将看到最新的数据版本。
综上所述,虽然在某些情况下可能会出现短暂的不一致,但通过上述机制,OceanBase 能够保证最终的数据一致性。
更多信息请查看:
- 影响 OceanBase 数据库连接超时的相关配置一般有哪些