1 个回答
Tidb单行分布式事务执行流程如下:
1、Begin(开启一个事务)
1、Begin(开启一个事务)
此时会从PD获取一个TSO,假设为100
2、执行SQLupdate test set name=‘Frank’ where id=3;
3、Commit(提交事务)此时再次从PD获取一个TSO,假设为110
4、进入2PC阶段prewrite阶段:将数据:3(id)_100(事务开始的TSO),Frank(数据内容)记录在默认链表中,将锁信息:3(id),W(写锁),pk(主锁),3(id),100(事务开始的TSO),Frank(数据内容)记录在锁链表中。
commit阶段:将锁信息:3(id),D(已释放的锁),pk(主锁),3(id),100(事务开始的TSO),Frank(数据内容)记录在锁链表中,将数据:3(id)_110(事务提交的TSO),100(事务开始的TSO)记录在更新链表中。
发布于:4周前 (02-27) IP属地:
我来回答
您需要 登录 后回答此问题!