一、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、修改

 ![图片[5]恒星 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-恒星个人博客网站MySQL运维—事务redo日志的作用恒星 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-恒星个人博客网站恒星](https://www.stellardata.top/wp-content/uploads/2021/07/MySQL运维-事务-redo日志的作用5.png)
4、锁

例子:

© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
    
















暂无评论内容