【 TiDB 使用环境】线上、测试、调研
【 TiDB 版本】
【遇到的问题】
【复现路径】做过哪些操作出现的问题
【问题现象及影响】
【附件】
请提供各个组件的 version 信息,如 cdc/tikv,可通过执行 cdc version/tikv-server --version 获取。
【 TiDB 使用环境】线上、测试、调研
【 TiDB 版本】
【遇到的问题】
【复现路径】做过哪些操作出现的问题
【问题现象及影响】
【附件】
请提供各个组件的 version 信息,如 cdc/tikv,可通过执行 cdc version/tikv-server --version 获取。
写在 内存的lock cf 中的
悲观锁、 乐观锁的都是写在 lock cf 中的
悲观锁 、乐观锁的 区别在于 乐观锁是在第一阶段的 commint 时才加锁;悲观锁 是在 dml 前就做检测 写入锁信息的
是KV节点的内存还是TiDB Server节点的内存?
在kv的内存中,tidb节点是多个且无状态的,不存储锁信息,每个 region 单独维护(只在 leader peer 维护)一个内存 lock table,当出现 region 变动时候例如 Leader transfer、Region merge 会先将 lock table 中的悲观锁通过 raft 同步到其他节点
kv 节点
就是在内存中维护的raft group
内存悲观锁怎么被全局知晓?例如其它session怎么知道这个锁?
内存悲观锁只会被存储在 Region leader 的内存中,而不会将锁持久化到磁盘,也不会通过 Raft 协议将锁同步到其他副本,如果这个节点发生故障,会造成悲观锁丢失。
事务会去检测锁的情况
那这个内存中的Region leader信息也会被记录到PD中吧?
region和store相关元数据会通过心跳汇报给PD,PD在根据具体上传上来的信息进行分析,回传给tikv节点,以达到对集群region分布等相关方面进行调度和调整,这跟是否是内存悲观锁没有关系。
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。