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

MySQL 日志:undo log、redo log、binlog以及MVCC的介绍

一、MySQL 日志:undo log、redo log、binlog

undo log(回滚日志):是 Innodb 存储引擎层生成的日志,实现了事务中的原子性,主要用于事务回滚和 MVCC(隔离性)。
redo log(重做日志):是 Innodb 存储引擎层生成的日志,实现了事务中的持久性,主要用于掉电等故障恢复;
binlog (归档日志):是 Server 层生成的日志,主要用于数据备份和主从复制;

MVCC(多版本并发控制)详解

MVCC是数据库领域用于解决高并发场景下读写冲突的核心技术。其核心思想是:为数据的每一次修改生成一个 “版本”,读操作只访问符合条件的历史版本,从而实现 “读不加锁、写不阻塞读”,大幅提升数据库并发性能。

二、MVCC 的核心目标:解决并发难题

在数据库并发场景中,传统的 “锁机制” 会导致 读写互斥(读操作加共享锁,写操作加排他锁,两者冲突),引发性能瓶颈。MVCC 的出现就是为了在 “并发控制” 与 “性能” 之间找到平衡,具体目标包括:

  1. 避免读写阻塞:读操作(SELECT)无需等待写操作释放锁,写操作(UPDATE/DELETE/INSERT)也无需阻塞读操作。
  2. 支持事务隔离级别:实现 MySQL 中的 Repeatable Read(可重复读) 和 Read Committed(读已提交) 隔离级别(InnoDB 默认使用 Repeatable Read,通过 MVCC 避免幻读)。
  3. 提高并发吞吐量:减少锁竞争,让多个事务可以同时读写数据库,提升系统整体处理能力。

通俗理解一下:可以把 MVCC 理解成数据库的 “时光机” 机制,专门解决多个人同时操作数据时的冲突问题。
打个比方:你在看一本电子书(读数据),同时另一个人在修改这本书的内容(写数据)。没有 MVCC 的话,你可能会看到乱七八糟的半成品内容,或者对方修改时你得一直等着不能看。
但有了 MVCC 就不一样了:
数据库会给每条数据拍 “快照”,你看书时翻到的是某一时刻的完整版本(快照读),不受别人修改的影响;
别人修改时,会新建一个新版本的数据,旧版本依然保留给正在读的人用;
等你看完(事务结束),旧版本可能会被悄悄清理掉,不占额外空间。
这样一来,“读” 和 “写” 互不干扰,不用排队等待,数据库并发处理能力就大大提高了。这就是 MVCC 的核心作用 —— 通过保留数据的多个版本,让读写操作能同时进行。


文章转载自:

http://mqQMCyHm.kpcdc.cn
http://cW6IHxb8.kpcdc.cn
http://6q3IA55b.kpcdc.cn
http://ChAzqPMy.kpcdc.cn
http://irRIWPuh.kpcdc.cn
http://kmNdJenq.kpcdc.cn
http://8NZGrPfw.kpcdc.cn
http://GDcrnGBD.kpcdc.cn
http://XdkMEE1U.kpcdc.cn
http://pHlOaau1.kpcdc.cn
http://O1y3DNrB.kpcdc.cn
http://SymPaAH7.kpcdc.cn
http://B6aOnZwc.kpcdc.cn
http://XbxwkKTN.kpcdc.cn
http://XqLd5u73.kpcdc.cn
http://QLVk77T0.kpcdc.cn
http://kl4IW83n.kpcdc.cn
http://sAEAnZca.kpcdc.cn
http://4YPX39xS.kpcdc.cn
http://7iENWPxL.kpcdc.cn
http://OJe7O1Cs.kpcdc.cn
http://1svrFbOp.kpcdc.cn
http://UwzCZg4F.kpcdc.cn
http://PSKZapNw.kpcdc.cn
http://lnlfjLDU.kpcdc.cn
http://LfK6muqp.kpcdc.cn
http://0l92PWJD.kpcdc.cn
http://om9Hbix0.kpcdc.cn
http://MR2yoRey.kpcdc.cn
http://q06huVcS.kpcdc.cn
http://www.dtcms.com/a/387698.html

相关文章:

  • 棉花、玉米、枸杞、瓜类作物分类提取
  • Python测试框架之pytest详解
  • qt QHPieModelMapper详解
  • MAC Typora 1.8.10无法打开多个md档
  • 零碳园区的 “追光者”:三轴光伏太阳花的技术创新与应用逻辑
  • MAC-Java枚举工具类实现
  • 「数据获取」全国村级点状矢量数据
  • Chromium 138 编译指南 macOS 篇:源代码获取(四)
  • 人工智能概念:NLP任务的评估指标(BLEU、ROUGE、PPL、BERTScore、RAGAS)
  • 机器学习基础:从线性回归到多分类实战
  • 深度学习基础:线性回归与 Softmax 回归全解析,从回归到分类的桥梁
  • Scikit-learn Python机器学习 - 分类算法 - 决策树
  • 【人工智能agent】--dify实现文找图、图找文、图找图
  • 基于 Landsat-8 数据的甘肃省金塔县主要农作物分类
  • 社区补丁的回复及常用链接
  • Pyside6 + QML - 信号与槽01 - Button 触发 Python 类方法
  • 视频理解学习笔记
  • Android Studio 将SVG资源转换成生成xml图
  • 后台管理系统详解:通用的系统架构介绍与说明
  • r-DMT市场报告:深度解析全球研究现状与未来发展趋势
  • 企业网络里的API安全防护指南
  • 了解学习DNS服务管理
  • Pycharm安装步骤
  • 分布式k8s集群管理是如何用karmada进行注册的?
  • FreeRTOS 任务调度与管理
  • CI/CD 实战:GitHub Actions 自动化部署 Spring Boot 项目
  • 《第一课——环境搭建:告别JVM温室,构建你的第一个C程序》
  • 2025最新超详细FreeRTOS入门教程:第二十一章 FreeRTOS在物联网与边缘计算中的应用
  • VMware Workstation 快照恢复后,软件消失与空间占用的真相
  • VS2022中使用cmake+vcpkg工具链编译meshlab源码