tidb 支持夸库事务吗

对于按照业务垂直拆分的库(如业务库A,业务库B)如果迁移到tidb,是也需要同样创建业务库A和业务库B呢?还是在tidb中创建一个库C?只是将业务库A、B中的表迁移到到C中,这样就没有分布式事物的问题了?又或者在tidb中支持夸库的事物吗?

在同一个 tidb 实例中,此种数据是被支持的。

1 个赞

同一个实例 多数据库 在应用层也是按照业务垂直拆分的微服务 如果A服务要调B服务 这种还是得在应用层自己控制分布式事务?

在同一个事务中进行即可,譬如 begin; insert into a.t select 1; insert into b.t select 2; commit;

关键是a.t 和 b.t 有可能是在两个独立的库中

额,请举例说明,这边给出的意思就是,只要不是跨实例,跨数据库操作是可以保证事务一致性的。

示例:业务层是微服务架构,如: A、B两个服务(独立进程) 现在A服务远程调用B服务完成数据库写操作并且是强一致性,数据库db1是服务A的数据库,数据库db2是服务B的数据库 , 有两种情况:1、db1、db2都在一个实例中、2、都不在一个实例中

支持

不支持

1、db1、db2都在一个实例中 对于应用层如果服务A 直接连接db1、db2 是支持的。但是应用层夸服务调用应该是不支持的。比如服务A 远程 调用服务B 就要自己控制事务了

是的,需要服务 B 确认所需数据在服务器 A 是否已经成功变更(update insert),可以通过 A 传 mq。或者服务 B 直接在数据库中查询,sql 执行是否符合逻辑。