本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了事务工作流程原理的相关问题,包括了事务的原子性是通过undo log来实现的、事务的持久性是通过redo log来实现的等等内容,下面一起来看一下,希望对大家有帮助。

一起来分析MySQL事务工作流程原理-LMLPHP

推荐学习:mysql视频教程

  • 事务的原子性是通过 undo log 来实现的
  • 事务的持久性是通过 redo log 来实现的
  • 事务的隔离性是通过 (读写锁+MVCC)来实现的
  • 而事务的终极大 boss 一致性是通过原子性,持久性,隔离性来实现的!!!

一起来分析MySQL事务工作流程原理-LMLPHP

1、redo log 实现持久性

问题1: 为什么需要redo log?

问题2:redo log如何保证事务的持久性?

一起来分析MySQL事务工作流程原理-LMLPHP

问题3:重写日志的流程?

一起来分析MySQL事务工作流程原理-LMLPHP

问题4:数据写入后的最终落盘,是从 redo log 更新过来的还是从 buffer pool 更新过来的呢?

问题5:redo log buffer 是什么?是先修改内存,还是先写 redo log 文件?

问题6:redo log顺序写入磁盘?

一起来分析MySQL事务工作流程原理-LMLPHP

2、bin log

为什么会有两份日志呢?

一起来分析MySQL事务工作流程原理-LMLPHP

其中将 redo log 的写入拆成了两个步骤:prepare 和 commit,这就是两阶段提交(2PC)

问题1: 两阶段提交原理?

问题2:为什么必须有“两阶段提交”呢?

3、undo log 实现原子性

undo log有两个作用:提供回滚和多版本控制(MVCC)

4、MVCC实现隔离性

MVCC在mysql中的实现依赖的是undo log与read view

  • undo log :undo log 中记录某行数据的多个版本的数据。
  • read view :用来判断当前版本数据的可见性

一起来分析MySQL事务工作流程原理-LMLPHP

一起来分析MySQL事务工作流程原理-LMLPHP

一起来分析MySQL事务工作流程原理-LMLPHP

5、MySQL 锁技术

一起来分析MySQL事务工作流程原理-LMLPHP

总结: 通过读写锁,可以做到读读可以并行,但是不能做到写读,写写并行 事务的隔离性就是根据读写锁来实现的!!!

推荐学习:mysql视频教程

以上就是一起来分析MySQL事务工作流程原理的详细内容,更多请关注Work网其它相关文章!

09-02 23:47