【面试题】mysql实现事务的原理(MVCC)

回答思路:
1、先谈mysql架构
2、引出并发的场景以及事物的影响
3、为了解决并发引出MVCC
4、MVCC的具体实现原理

在这里插入图片描述

  • mysql的逻辑架构大概分为四层:
    第一层: 服务层(为客户端服务)
    为请求做连接处理,授权认证,安全等。
    第二层:核心服务
    比如查询解析,优化,缓存,内置函数。存储过程,触发器,视图等。对于第二层来说,所以跨存储引擎的功能都在这一层实现。
    第三层:存储引擎
    负责mysql中数据的存储和提取。服务器通过api与存储引擎通信,这些接口屏蔽了存储引擎之间的差异。也就是说,接口的存在,导致不同存储引擎的差异不会影响到上层查询过程。
    架构分层之后,可以更好的理解一些问题,比如我们很关心的并发问题:mysql层面的并发控制,实际上是分为两种:
    服务层的并发
    存储引擎层的并发的
    第四层:系统文件层,保存数据、索引、日志等。
  • 事务隔离级别
    大家都知道数据库事务具备ACID特性,即Atomicity(原子性) Consistency(一致性), Isolation(隔离性), Durability(持久性)
    原子性:要执行的事务是一个独立的操作单元,要么全部执行,要么全部不执行
    一致性:事务的一致性是指事务的执行不能破坏数据库的一致性,一致性也称为完整性。一个事务在执行后,数据库必须从一个一致性状态转变为另一个一致性状态。
    隔离性:多个事务并发执行时,一个事务的执行不应影响其他事务的执行,SQL92规范中对隔离性定义了不同的隔离级别:
    读未提交(READ UNCOMMITED)->读已提交(READ COMMITTED)->可重复读(REPEATABLE READ)->序列化(SERIALIZABLE)。隔离级别依次增强,但是导致的问题是并发能力的减弱。

事务隔离级别
MYSQL 事务日志
MVCC实现
具体点击这里参考

发布了213 篇原创文章 · 获赞 258 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/wolf_love666/article/details/93634727
今日推荐