mysq - 事务(全)l

1. 四大特性

1. (基础)原子性,事务不可分割,要么全部成功,要么全部失败
2. (约束条件)一致性,也可以说成合法性,事务要符合逻辑,数据库限制,比如余额不能为负数,A给B转账,A+B的总额始终相等
3. (手段)隔离性
4. (目的)永久性

2. 隔离级别

1. mysql默认隔离级别可重复读,其他数据级别为读已提交
理解参考:https://blog.csdn.net/weixin_41814871/article/details/124996364

 3. 事务日志

1. 事务的隔离性由锁机制实现
2. redo与undo日志都是存储引擎级别的日志
3. redo log: cpu中的数据与磁盘中的数据之间加一个中间文件(redo log),这个文件用于存储本事务做了哪些操作,然后再定时更新到磁盘。cpu到redo log的速度是很快的。
4. undo log: 回滚数据,保证数据回滚到修改之前的状态
5. redo 保证事务的持久性,undo保证事务的原子性

 4. 可重复读实现机制

MVCC版本控制
一个事务中,当只有第一次执行select时,会生成一个ReadView,它决定了查找记录的版本,以后的select都根据该版本来操作

 5. MVCC(多版本控制)实现机制

1. 三个因素
1. 隐藏字段:a.事务id; b.指针对应修改前的信息
2. undo log版本链
3. readview规则(读已提交,每次查询都会生成一个readview;可重复读,只有第一次查询的时候生成readview)

 

 

posted @ 2022-02-07 16:46  10132714  阅读(33)  评论(0编辑  收藏  举报