根据Oracle RAC Cache Fusion技术引起的思考

RAC的cache fusion通过resource master实现了内存融合,但TiDB的tidb server节点内存数据是不会相互交换和通信的,主要有以下几个疑问:
1.不同的tidb server中是否有可能缓存完全相同的数据,例如同一张表?
2.tidb悲观事务的加锁过程在prewrite之前,能否这样理解:乐观锁模式下,SQL执行到commit指令时才触发两阶段提交。悲观锁模式下,SQL执行到DML语句时,其实已经开始两阶段提交中的prewrite了?

1、TiDB Server上主要是Coprocessor Cache和缓存表(v6.0新特性),以及每条SQL的内存占用(相当于Oracle的PGA),而针对表数据的缓存是位于TiKV Server的block cache中的(相当于Oracle的buffer cache)。每个TiKV的block cache缓存该实例的热数据
2、找了2张图,对比一下
Image
Image%20%5B2%5D

1 个赞

TiDB的 TiDB server 端是无状态的,两个不同的TiDB Server之间不通信,所以不能做到Oracle RAC的cache fusion。TiDB只有小表缓存,两个 TiDB能否缓存同一张表感觉是有可能的。

Oracle RAC的cache fusion实现据说很难,一般不会有人做这个

思维有点超前

分片了,就不再想双活了哈

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。