首页 > 社交 > 科普中国

面渣逆袭:MySQL六十六问,两万字+五十图详解!有点六

常驻编辑 科普中国 2022-06-22 字段   路由   详解   索引   事务   版本   操作   数据库   引擎   数据   日志
隔离级别脏读不可重复读幻读Read Uncommited 读取未提交是是是Read Commited 读取已提交否是否Repeatable Read 可重复读否否是Serialzable 可串行化否否否70s拜客生活常识网

52.事务的各个隔离级别都是如何实现的?

读未提交70s拜客生活常识网

读未提交,就不用多说了,采取的是读不加锁原理。70s拜客生活常识网

  • 事务读不加锁,不阻塞其他事务的读和写
  • 事务写阻塞其他事务写,但不阻塞其他事务读;

读取已提交&可重复读70s拜客生活常识网

读取已提交和可重复读级别利用了ReadViewMVCC,也就是每个事务只能读取它能看到的版本(ReadView)。70s拜客生活常识网

  • READ COMMITTED:每次读取数据前都生成一个ReadView
  • REPEATABLE READ :在第一次读取数据时生成一个ReadView

串行化70s拜客生活常识网

串行化的实现采用的是读写都加锁的原理。70s拜客生活常识网

串行化的情况下,对于同一行事务,会加写锁会加读锁。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。70s拜客生活常识网

53.MVCC了解吗?怎么实现的?

MVCC(Multi Version Concurrency Control),中文名是多版本并发控制,简单来说就是通过维护数据历史版本,从而解决并发访问情况下的读一致性问题。关于它的实现,要抓住几个关键点,隐式字段、undo日志、版本链、快照读&当前读、Read View70s拜客生活常识网

版本链70s拜客生活常识网

对于InnoDB存储引擎,每一行记录都有两个隐藏列DB_TRX_ID、DB_ROLL_PTR70s拜客生活常识网

  • DB_TRX_ID,事务ID,每次修改时,都会把该事务ID复制给DB_TRX_ID
  • DB_ROLL_PTR,回滚指针,指向回滚段的undo日志。

70s拜客生活常识网

表隐藏列

相关阅读:

  • 字段类型有哪些(字段长度怎么设置)
  • 技术人必备的接口测试神器:apifox、apipost、yapi,实用
  • 我做开发测试犯的错
  • 基于SpringBoot微服务开发中的异常处理最佳实践
  • MySQL专题1:
  • 你今天玩游戏了吗?游戏道具了解下
  • 什么是CSRF
  • 最全SQL
  • 云原生(十四)
  • MySQL索引原理篇:深入数据库底层揭开索引机制的神秘面
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。