学习TiDB事务的底层原理思想,总结一下自己的理解
官方文档
乐观事务:
一种与传统分布式事务不同的解决方案,不一定会加锁,能够实现跨节点的分布式事务安全,如果写冲突不频繁,那么可以通过跳过获取行锁而提高性能,如果写同一行冲突频繁,性能会低于悲观事务
下面请对照着官网的一张图,配合理解乐观事务的实现
(1)客户端事务开始,TiDB接到begin后,向PD管理层申请一个time stamp (下面简称ts)做为事务起始编号 start_ts .
(2)执行客户端SQL:
1:读请求,则先向PD获取Region的分散存储记录,找到对应的KV节点查询相关数据,同时把该数据结果保存到TiDB内存中,设置版本号为start_ts, 从此该事务session的数据就有了MVCC版本控制
2:写操