Undo日志
INSERT语句的undo log日志
对应的类型是TRX_UNDO_INSERT_REC
- 这条日志的开始位置
- 主键的各列长度和值
- 表id
- undo log日志编号
- undo log日志类型
- 这条日志的结束位置
假设现在需要回滚一条insert语句,只需要把undo log拿出来,就知道在哪个表里插入的数据,主键是什么,直接定位到哪个表和主键对应的缓存页,从里面删除掉之前insert语句插入进去的数据就可以了。
MySQL运行时多个事务同时执行
read uncommitted,读未提交,不允许脏写(第一类丢失更新)发生,因为它不允许两个事务在没提交的情况下去更新同一行的数据的值。
RC,RR,serialize
MySQL是如何支持四种隔离级别
MySQL依托于MVCC机制,就能让RR级别避免不可重复读和幻读的问题。
MySQL的MVCC机制,多版本并发控制机制
每条数据都有两个隐藏的字段,一个是trx_id,一个是roll_pointer,trx_id就是最近一次更新这条数据的事务id,roll_pointer就是指向更新了这个事务之前生成的undo log。