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

MySQL问题:MVCC是什么?

MVCC(多版本并发控制)是一种数据库并发控制技术,核心思想是通过维护数据的多个版本来实现高效的读写并发

MVCC工作原理:

数据版本链(事务ID和回滚指针链接成版本链)

ReadView(读视图)

ReadView中有四个字段,分别是:

m_ids:当前数据库中“活跃事务”(即启动了但没提交的事务)的事务id列表

min_trx_id:当前数据库中“活跃事务”中事务id最小的事务

Max_trx_id:当前数据库中应该给下一个事务的id值

Creator_trx_id:创建该ReadView的事务的事务id

除了这四个字段还要注意两个隐藏列在主键索引记录中

Trx_id:当事务对某条主键索引记录改动时,把该事务的事务id记录在这个列中

Roll_pointer:当事务对某条主键索引记录改动时,会把旧版本的记录写入undo日志中,这个隐藏列是个指针,指向每个旧版本记录

一个事务去访问记录的时候,除了自己的更新记录总是可见外,还有这几种情况:

1.如果trx_id<min_trx_id,代表这个记录是在创建ReadView前就提交的事务生成的,所以该版本的记录对当前事务可见。

2.trx_id>=max_trx_id,代表是创建ReadView后才启动的事务生成的,所以该版本的记录对当前事务不可见。

3.min_trx_id<trx_id<max_trx_id,也就是在之间,当trx_id在m_ids中不可见,不在则可见。

相关文章:

  • 芯科科技推出首批第三代无线开发平台SoC,高度集成的解决方案推动下一波物联网实现突破
  • CS144 - Lecture 1 记录
  • EasyRTC嵌入式音视频实时通话SDK助力AI与IoT智能硬件打造音视频交互多场景应用
  • 初识 Pytest:测试世界的智能助手
  • ASP.NET MVC添加新控制器示例
  • 【网络通信】网络通信全解
  • 国产化Excel处理组件Spire.XLS教程:如何使用 C# 将 Excel(XLS 或 XLSX)文件转换为 PDF
  • Google Play的最新安全变更可能会让一些高级用户无法使用App
  • leetcode hot100刷题日记——23.数组中的第K个最大元素
  • day12 leetcode-hot100-21(矩阵4)
  • Docker容器启动失败的常见原因分析
  • Git使用手册保姆级教程
  • GC1267F:单相全波风扇电机预驱动芯片解析
  • ubuntu20.04安装NVIDIA显卡驱动(驱动官网下载安装包,解决开机启动黑屏问题,终极保姆式方案教程)
  • 【Android笔记】记一次 CMake 构建 Filament Android 库的完整排错过程(安卓交叉编译、CMake、Ninja)
  • King3399(ubuntu文件系统)iic(i2c)功能测试
  • IoT/基于NB28-A/BC28-CNV通信模组使用AT指令连接华为云IoTDA平台(HCIP-IoT实验2)
  • Mac 版不能连接华为 GaussDB 吗?我看 Windows 版可以连接?
  • 华为云Flexus+DeepSeek征文|华为云Flexus云服务器X实例上部署Dify:打造高效的开源大语言模型应用开发平台
  • ubuntu国内镜像源手动配置
  • 周口建设局网站/怎么从网上找国外客户
  • 宝塔搭建本地网站/手机如何制作一个网页链接
  • 哪里有网站开发公司/网站关键词优化办法
  • wordpress怎么搜索博客/草根seo博客
  • 学校网站建设工作/厦门百度整站优化服务
  • 免费建网站家谱系统/没经验可以做电商运营吗