2
at模式:假如请求走到数据库层面先执行业务sql,然后再上报给tc注册这个分支,tc服务端收到请求 lock 插入成功了->branch 插入,,然后再响应给rm,rm再插入undolog 么?
at模式:假如请求走到数据库层面先执行业务sql,然后再上报给tc注册这个分支,tc服务端收到请求 lock 插入成功了->branch 插入,,然后再响应给rm,rm再插入undolog 么?
是这样,但业务事务不会在branch插入前提交,一定是注册了分支才有可能提交分支事务
确认下两者数据库的时区是否一致,然后分支事务的时间肯定是比tcbranch的时间要早的,因为是在本地事务commit前去注册的分支,你的sql,业务代码都执行完了,当然是比branch插入时间要早
嗯嗯,我刚才看了源码然后调试,发现commit前,数据库订单表是没有数据的,确实是远程注册之后,分支注册表是有数据,但是分支全局表数据又要依赖于本地事务业务sql组成的主键key,,,,所以业务sql只是组装sql,并没有改变数据库物理磁盘,是这样吧
是的,seata不会改变业务sql的内容,所以sql发出是什么样,就是什么样
牛啊 你们这些阿里开源者简直就是天才啊赞赞赞
哈哈过奖了,欢迎有机会也参与到社区的贡献中来