欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

redo log

程序员文章站 2022-06-08 22:44:34
...
redo log是关系型数据库的核心啊,保证了ACID里的D。
所以redo log是牵一发而动全身的操作 当内存数据页跟磁盘数据页不一致的时候,把内存页称为'脏页'。
如果redo log设置得太小,redo log写满.那么会涉及到哪些操作呢,我认为是以下几点:

1.把相对应的数据页中的脏页持久化到磁盘,checkpoint往前推
2.redo log还记录了undo的变化,undo log buffer也要持久化进undo log
3.当innodb_flush_log_at_trx_commit设置为非1,还要把内存里的redo log持久化到磁盘上
4.redo log还记录了change buffer的改变,那么还要把change buffer purge到idb

以及merge change buffer.merge生成的数据页也是脏页,也要持久化到磁盘上述4种操作,都是占用系统I/O,影响DML,如果操作频繁,会导致'抖'得向现在我们过冬一样。但是对于select操作来说,查询时间相对会更快。因为系统脏页变少了,不用去淘汰脏页,直接复用干净页即可。
还有就是对于宕机恢复,速度也更快,因为checkpoint很接近LSN,恢复的数据页相对较少所以要控制刷脏的频率,频率快了,影响DML I/O,频率慢了,会导致读操作耗时长。