前言
刚刚复习了一遍MySQL事务相关知识,梳理内容如下:
(PS:不想码字码,先把大纲给出来后期有时间了再完善)
总结思维导图,可以很好的应对面试:
一、事务四大特性
原子性:是指事务包含的所有操作要么全部成功,要么全部失败回滚。undo log实现回滚
一致性:是指一个事务执行之前和执行之后都必须处于一致性状态。
隔离性:跟隔离级别相关。
永久性:是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
二、隔离问题
脏读:
读取了另一个事务未提交的脏数据;
不可重复读:
对于某一条数据查询读取了另一事务已提交的数据;
不可重复读关注的是update;
幻读:
对于某一范围查询读取另一条已经提交的事务;
幻读关注是delete和insert;
三、隔离级别
读未提交:
所有事务都可以看到其他未提交事务的执行结果;
存在 脏读、不可重复读、幻读 问题;
读已提交(RC):
一个事务只能看见已经提交事务所做的改变;
存在 不可重复读、幻读 问题;
不可重复读(RR):
默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行;
存在 幻读 问题;
串行化:
通过强制事务排序,使之不可能相互冲突;
使用间隙锁解决幻读;
四、MVCC实现
具体细节待补充,具体看下图
五、相关日志
undo log : 实现原子性回滚;
redo log : 实现持久化,系统崩溃恢复功能:
待补充,先看下图
六、相关锁
待补充,先看下图
知识总结的思维导图
架构图原理图:
总结
不定期更新完善内容先给出大纲,有时间再把具体内容加上。