面试题:MySQL 事务 日志 MVCC

事务的特性 ACID


事务的隔离级别

  • 并发事务问题
    • 脏读:一个事务读到另一个事务还没有提交的数据
    • 不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同
    • 幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了幻影
  • 隔离级别
    • 读未提交
    • 读已提交
    • 可重复读
    • 串行化

日志


💖 redo log

redo 重做日志,记录的是事务提交时数据页的物理修改 ,用来实现事务的持久性

当事务提交后,会把所有修改信息存到该日志文件中,当刷新脏页到磁盘发生错误 时,用于数据恢复

  • 重做日志缓存(redo log buffer):内存
  • 重做日志文件(redo log file):磁盘

💖 undo log

🌟 小结

MVCC

多版本并发控制

💖 隐藏字段

注意:是记录中的隐藏字段

💖 undo log


undo log 版本链

💖 readview




💖 RC 与 RR 的 ReadView


💖 总结

相关推荐
LiRuiJie35 分钟前
深入剖析MySQL锁机制,多事务并发场景锁竞争
数据库·mysql
2501_915374351 小时前
Faiss向量数据库全面解析:从原理到实战
数据库·faiss
睡觉待开机1 小时前
0. MySQL在Centos 7环境安装
数据库·mysql·centos
2501_915374351 小时前
Faiss vs Milvus 深度对比:向量数据库技术选型指南
数据库·milvus·faiss
一叶知秋哈1 小时前
Java应用Flink CDC监听MySQL数据变动内容输出到控制台
java·mysql·flink
傻啦嘿哟2 小时前
Python 数据分析与可视化实战:从数据清洗到图表呈现
大数据·数据库·人工智能
cookqq2 小时前
mongodb源码分析session异步接受asyncSourceMessage()客户端流变Message对象
数据库·sql·mongodb·nosql
呼拉拉呼拉2 小时前
Redis故障转移
数据库·redis·缓存·高可用架构
什么都想学的阿超2 小时前
【Redis系列 04】Redis高可用架构实战:主从复制与哨兵模式从零到生产
数据库·redis·架构
pp-周子晗(努力赶上课程进度版)3 小时前
【MySQL】视图、用户管理、MySQL使用C\C++连接
数据库·mysql