关于戒烟网站怎么做,长春网络科技公司排名,做网站一年赚80亿,fotor懒设计在线设计redo log#xff08;重做日志#xff09;
为什么需要redo log#xff1f;
在mysql提交一个事务后#xff0c;这个事务所作的数据修改并不会直接保存到磁盘文件中#xff0c;而是先保存在buffer pool缓冲区中#xff0c;在需要读取数据时#xff0c;先从缓冲区中找重做日志
为什么需要redo log
在mysql提交一个事务后这个事务所作的数据修改并不会直接保存到磁盘文件中而是先保存在buffer pool缓冲区中在需要读取数据时先从缓冲区中找没找到再去磁盘找加之每次提交事务都将数据写入磁盘的效率低下所以引入了buffer pool缓冲区
也正是因为一个事务的提交并不会立即由磁盘进行持久化此时mysql故障就会有缓冲区中数据丢失的风险
因此redo log记录了一个事务对数据页的修改这个记录与undolog不同是物理层面的比如对 XXX 表空间中的 YYY 数据页 ZZZ 偏移量的地方做了AAA 更新
提交一个事务后先将redo log持久化磁盘就可以保证这个事务修改的数据被持久化了
redo log重做日志是 Innodb 存储引擎层生成的日志实现了事务中的持久性主要用于掉电等故障恢复
作用
redo log 主要用于保证事务的持久性和数据恢复。在事务提交时redo log 记录了所有修改操作这些日志可以在数据库崩溃后用来重做恢复事务以保证已提交事务的持久性。
特性
物理日志记录的是页级别的物理修改操作。循环写redo log 的大小固定采用循环写的方式。持久性保证事务在提交时会先写入 redo log 并刷盘确保即使数据库崩溃也能通过 redo log 恢复已提交的事务。
记录内容
页号、偏移量、修改前后的数据等。
redo log 和 undo log 区别在哪
这两种日志是属于 InnoDB 存储引擎的日志它们的区别在于
redo log 记录了此次事务「完成后」的数据状态记录的是更新之后的值undo log 记录了此次事务「开始前」的数据状态记录的是更新之前的值
事务提交之前发生了崩溃重启后会通过 undo log 回滚事务事务提交之后发生了崩溃重启后会通过 redo log 恢复事务如下图 推荐学习 https://xxetb.xetslk.com/s/p5Ibb