一、redo日志
1、内存页
内存数据页的变化
LSN:日志序列号(数据变化的版本号)
data page:磁盘数据页(tl.ibd)
logfite:redolog文件(ibIogfite0~1)
data buffer:数据缓冲区
redo log buffer:redol缓冲区
数据库要求:启动时,必须保证datapage和logfile中LSN一致才能,正常打开数据,否则就需要自动恢复
可以在CSR(CrashSafeRecovery)过程中,实现前滚的功能
2、CSR自动故障恢复
1)把用户需要修改的内容写入内存中,生成LSN=1
2)内存同时生成redo_log buffer区域,记录修改的过程,生成LSN=2
3)提交,写入磁盘
4)如果内存丢失,同时加载原来的数据,把redo_logfile也加载到内存中,重做一遍redo_log,使数据和redo_log中的LSN一致,启动mysql
3、undo日志
1)用户修改数据的时候,同时生成undo(快照)
2)如果用户继续提交,undo则自动失效,如果选择回滚,就使用undo日志把数据恢复,LSN生成新的
二、隔离级别
1、隔离级别及锁机制
READ UNCOMMITTED
允许事务查看其他事务所进行的未提交更改
READ COMMITTED(幻读)
允许事务查看其他事务所进行的已提交更改
REPEATABLE READ(可重复读,防止幻读)****“
确保每个事务的SELECT输出一致
InnoDB的默认级别
undo的快照来实现读一致性
SERIALIZABLE
将一个事务的结果与其他事务完全隔离
2、查看
3、修改
4、锁
例子:
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容