当前位置: 首页 > news >正文

mysql 源码学习理解记录--lock_rec_move

记录源码学习笔记,如有错误,还请帮忙指正。

Lock_rec_move 函数使用场景之用于update

Update 匹配条件时会用lock_rec_lock先加锁。然后再进行ha_update_row 操作。

在修改时,当修改的字段前后长度不一致时,会导致不能原地修改,因此会产生先delete、再insert rec的行为,在先删后插的过程中,为了保持对这个lock的持有,会将lock先move到infimum记录上,然后等插入完成后,再将这个lock转移到新的rec对象上来,转移过程只有 heap no对应 bit的变化,没有type mode变化。

如果update操作被rollback,也会有同样的流程。

另外,如果修改的字段前后长度一致,就可以做原地修改,就不存在这个lock_rec_move的操作了。

lock_rec_move查看调用关系,有以下几个场景:

1)lock_update_split_right 

page向右分裂时更新lock table

2)lock_update_merge_left

3)lock_update_copy_and_discard

4)lock_update_root_raise

5)lock_rec_store_on_page_infimum 将 lock转移到infimum上。

6)lock_rec_restore_from_page_infimum 将infimum上的lock恢复到原记录上。 

btr_cur_optimistic_update、btr_cur_pessimistic_update 都有使用到5,6函数。

http://www.lryc.cn/news/36094.html

相关文章:

  • markdown(.md)常用语法
  • 千言数据集赛题介绍
  • 信息技术最全总结(备考教资)
  • opencv识别车道线(霍夫线变换)
  • MySQL的同步数据Replication功能
  • 2023年全国最新高校辅导员精选真题及答案17
  • 中文代码92
  • Python SEO采集海量文本标题,用倒排索引找出“类似的标题“代码实现
  • 模型杂谈:快速上手元宇宙大厂 Meta “开源泄露”的大模型(LLaMA)
  • RedisCluster集群模式下master宕机主从切换期间Lettuce连接Redis无法使用报错Redis command timed out的问题
  • Xuetr杀毒工具使用实验(28)
  • fastapi(https)+openssl+测试(双向校验)
  • TiDB Server
  • S3C2440移植Linux4.19.275内核以及过程中遇到的问题
  • 解忧杂货铺(二):UML时序图
  • 微信小程序的代码由哪些结构组成?
  • Cloud Kernel SIG月度动态:发布 ANCK 新版本及 Plugsched v1.2.0
  • Jedis 使用详解(官方原版)
  • 关于Pytorch中的张量学习
  • 基于Transformer的目标检测算法学习记录
  • 嵌入式学习笔记——使用寄存器编程实现按键输入功能
  • 打卡小达人之路:Spring Boot与Redis GEO实现商户附近查询
  • Apache HTTP Server <2.4.56 mod_proxy_uwsgi 模块存在请求走私漏洞(CVE-2023-27522)
  • JUC并发编程设计模式
  • HTTPS加密解析
  • Python每日一练(20230309)
  • 哈希表题目:数组的度
  • 初识rollup 打包、配置vue脚手架
  • 软考网络工程师证书有用吗?
  • postgresql 自动备份 bat实现