[课程问题] TiDB 数据库核心原理与架构 [TiDB v6] :TiKV-分布式事务

视频课46:06 开始的


假设在事物二未提交 时要修改id 等于1 先去write_cf 看到put<1_100,100> 然后再去lock_cf 发现有锁 所以不能修改
为什么不直接去lock_cf 看有没有锁呢 ? 没有锁不就可以直接写default_cf 或者没到255字节 写write_cf 了吗

修改id=1需要先检索数据,然后找到目标数据,然年查看发起数据的TSO,与发起修改动作之间是否有修改就要去查看锁信息,因为写操作需要申请独占锁。
读取的话也是先检索数据,找到目标数据,然年查看发起数据的TSO,找到最近版本的数据即可,因为甲即便与发起修改动作之间是有修改,但是没有提交的话也是不应该读到的,读取操作不需要申请独占锁资源。

个人理解

2 个赞

也就是说 修改命令虽然拿到了pd 给的tso 对应的tikv 对应的region 但是他可能不能确定数据到底在哪 检索write 可以检索到这个region 的所有数据的key 所以他先去确认了一下他要的数据是不是确实在这 然后才去搜索锁信息

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。