RR:可重复读 RC:读已提交 两种隔离机制
undo_log,又称回滚日志,在数据修改的时候,如果某些原因导致事务失败可以回滚,trx_id是事务编号,db_roll_ptr用来连接上一个事务,trx_id为null表示回滚到了原始的数据。
读已提交(RC)隔离机制下快照读规则: 在每次执行快照读时生成ReadView。
根据版本链数据访问规则,事务4中第一次select查询可以读取事务1提交的数据,事务4第二次select查询可以读取事务2提交的事务,第一次读到张三,第二次读到张小三。所以读以提交隔离机制无法避免不可重复读问题。
可重复读(RR)隔离机制的快照读规则:仅在第一次快照读时生成ReadView,后续快照读复用。
这样就避免了不可重复读的问题。
RR(Repeatable READ)级别 能避免幻读吗?能,但不完全能。
当在同一事务内,两次快照读之间有当前读,就会产生幻读。