事务
操作集合
特性
原子性
要么全部执行,要么全部失败
一致性
开始和完成,数据保持一致
隔离性
事务之间,相互独立
持久性
修改的数据是完整的
隔离级别
并发情况下引起的问题
1:脏读
2:幻读
3:不可重复读
解决
读未提交RU
情况都出现
读已提交RC
不会脏读
可重复读RR
不会出现幻读
串行化SE
实现
锁机制
阻止其他事务对数据进行操作
RU:事务读的时候不加锁
RC:读的时候加行级共享锁,读完释放
RR:读的时候加行级共享锁,事务执行完释放
SE:读的时候加表级共享锁,事务执行完释放
mvcc机制
生成一个数据快照,并用这个快照提供一定级别的一致性的读取,也称为多版本数据控制
实际就是cas版本控制
查询(select):查找数据版本号,早于(小于等于)当前事务id的数据行。查找删除版本号为null 或者大于当前事务版本号的记录
插入:同一事务中插入两条记录,记录的 数据版本号为事务id,删除版本号为null
删除:一个事务(假设id为22)中执行删除语句,会更新数据的删除版本号为 当前事务id 22
修改:当一个事务中 修改一条记录时, 是先复制该数据,新数据数据版本号为当前事务id,删除版本号为 null 。然后更新 原来数据的删除版本号为 当前事务id。
Undo Log
指事务开始之前, 在操作任何数据之前, 首先将 需操作的 数据备份到一个地方
Redo Log
为了实现事务的持久性而出现的产物