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

mysql的mvcc机制中,read view是什么时候生成的?

在 MySQL 的 Read Committed (RC) 隔离级别下,读视图(Read View) 的生成遵循以下原则:


RC 隔离级别下 Read View 的生成时机

在 RC 隔离级别中,每次执行**快照读(Snapshot Read)**时都会生成一个新的 Read View,而不会在事务开始时就固定一个 Read View。这意味着:

  1. 每个查询都会生成一个新的 Read View

    • 每次执行 SELECT 查询时,都会获取当前数据库的最新提交版本。
    • 查询不会受到事务中前一次查询的 Read View 的限制。
  2. 与事务的写操作无关

    • 即使事务已经执行过写操作 (INSERT, UPDATE, DELETE),后续的读操作依然会基于最新的已提交数据生成新的 Read View

RC 与 Read View 的关键点

  • 实时性:RC 隔离级别确保每次查询都能读取到其他事务已经提交的最新数据。
  • 快照独立性:RC 的每次查询生成的 Read View 是独立的,与事务其他查询生成的 Read View 无关。
  • 不可重复读:由于每次查询生成的 Read View 不同,同一事务中的两次查询可能读取到不一致的数据(即不可重复读)。

RC 隔离级别下 Read View 的作用

在 RC 中,Read View 的主要作用是:

  1. 避免读取未提交的数据(防止脏读)。
  2. 每次查询的 Read View 确保只读取其他事务已经提交的数据版本。

对比 RR 隔离级别

Repeatable Read (RR) 隔离级别下:

  • Read View 只在事务的第一次快照读时生成。
  • 整个事务中后续的快照读共享相同的 Read View
  • 保证了同一事务内的可重复读。

而在 RC 中,每次查询的 Read View 独立生成,因此可能导致不可重复读。


总结

Read Committed (RC) 隔离级别下:

  • Read View 是在每次执行快照读时生成的,而不是在事务开始时固定生成。
  • 这一机制确保了事务每次查询可以看到最新的已提交数据,同时也导致了不可重复读的现象。

http://www.kler.cn/a/400635.html

相关文章:

  • 在Qt(以及C++)中, 和 * 是两个至关重要的符号--【雨露均沾】
  • 【Nginx从入门到精通】03 、安装部署-让虚拟机可以联网
  • VScode使用Batch Runner插件在终端运行bat文件
  • Solana应用开发常见技术栈
  • Qt 之 qwt和QCustomplot对比
  • OpenSSL 自签名
  • 游戏引擎学习第13天
  • 使用 JavaScript 制作 To-Do List
  • 06 - Clickhouse的表引擎
  • 【3D Slicer】的小白入门使用指南十
  • React(一)
  • 【Golang】——Gin 框架中的路由与请求处理
  • 【机器学习】SVM原理详解
  • Excel使用-弹窗“此工作簿包含到一个或多个可能不安全的外部源的链接”的发生与处理
  • 网络设备 - 这个有点难!
  • html | 节点操作
  • 手撸 chatgpt 大模型:简述 LLM 的架构,算法和训练流程
  • V-rep学习笔记:机器人路径规划
  • Vue3中使用Axios构建高效的请求处理机制
  • 苍穹外卖-后端部分
  • 【青牛科技】汽车收音机调频中频放大器——D1145
  • 游戏引擎学习第15天
  • 【前端知识】nodejs项目配置package.json深入解读
  • web——upload-labs——第十二关——%00截断
  • shell脚本判断nginx安装和运行
  • 深度学习概览