Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于bytejta表 #140

Open
yeruilong opened this issue Aug 22, 2021 · 1 comment
Open

关于bytejta表 #140

yeruilong opened this issue Aug 22, 2021 · 1 comment

Comments

@yeruilong
Copy link

想问下作者这个表具体是怎么使用的呢?gxid和bxid分别代表啥?是不是try阶段成功了就插入一条记录?然后再confirm或者cancel的时候插入第二条记录?最后整个事务执行完了把这两条记录都删了?但是这里有个问题,假设confirm阶段有个服务执行失败了,那么这个时候表里就只有try时候的一条记录,那么在进行重试的时候,他怎么依据表里的数据知道是要confirm还是rollback呢?

@liuyangming
Copy link
Owner

  1. bytejta表是用来保障极端情况下数据一致性的: 服务宕机情况下, try/confirm/cancel参与的本地事务可能已经commit也可能尚未commit,它的状态是对TM是未知的。因此,TM后续无法根据它的状态完成后续恢复操作。bytejta表的作用是可以让TM在上文所述的本地事务中插入一条数据,与该本地事务一并提交,后续可以判断该数据存在与否得知该本地事务是否commit;

2.gxid和bxid对应该本地事务ID的全局标识和分支标识;

3.bytejta只做辅助作用,事务状态主要记录在事务日志中。只有少部分场景下,byteTCC才依赖这张表来判断某个本地事务是否被commit。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants