shigp
#1
OceanBase集群部署在3个Zone(zone1、zone2、zone3),租户的Primary Zone设置为(zone1,zone2,zone3)。各表主副本分布如下:
T1表:主副本位于 zone1
T2表:主副本位于 zone2
T3表:主副本位于 zone3
BEGIN;
INSERT INTO T1 VALUES (…); – 插入T1表
INSERT INTO T2 VALUES (…); – 插入T2表
INSERT INTO T3 VALUES (…); – 插入T3表
COMMIT;
关于上述事务内语句的路由策略,说法正确的是:
A. 第一条Insert语句(T1插入)开启事务,被路由至 T1表主副本所在的zone1;
B. 事务内的后两条Insert语句(T2、T3插入)全部路由至事务开启节点(即第一条语句的路由节点);
C. 第三条Insert语句(T3插入)被路由至 T3表主副本所在的zone3
D. 第二条Insert语句(T2插入)被路由至 事务开启节点(即T1主副本所在的zone1);
2 个赞
渔舟唱晚
#3
正确的答案是 A 和 C。这反映了OceanBase在分布式环境中如何通过主键路由策略来优化事务处理,并保证数据的强一致性。
路由原理简述:
- 事务开始时,第一个SQL语句决定了事务的初始执行节点。
- 对于同一事务内的其他SQL语句,OceanBase会检查目标表的主副本位置。
- 如果目标表的主副本不在当前执行节点所在的Zone,则该SQL语句会被路由到目标表主副本所在的Zone。
- 这种方式可以减少跨Zone的数据传输,同时确保数据写入操作能够在最接近数据的地方进行,从而提升性能并维持数据的一致性。
参考:https://www.oceanbase.com/docs/common-best-practices-1000000001591716
来轩
#4
这反映了OceanBase在分布式环境中如何通过主键路由策略来优化事务处理,并保证数据的强一致性,这里讲的不是这个事情,是分布式事务的路由
2 个赞
A. 第一条Insert语句(T1插入)开启事务,被路由至 T1表主副本所在的zone1;
C. 第三条Insert语句(T3插入)被路由至 T3表主副本所在的zone3
1 个赞