redo log
程序员文章站
2022-06-08 22:26:16
...
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,频率慢了,会导致读操作耗时长。
所以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,频率慢了,会导致读操作耗时长。
上一篇: 口碑营销小技巧:及时消除百度负面信息
推荐阅读
-
使用vs2010编译log4cxx图文教程
-
ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...
-
详解log4net的使用
-
springboot 高版本后继续使用log4j的完美解决方法
-
Spring MVC项目中log4J和AOP使用详解
-
Android开发笔记之:Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)
-
idea mybatis配置log4j打印sql语句的示例
-
PHP如何将log信息写入服务器中的log文件
-
MyBatis3用log4j在控制台输出SQL的方法示例
-
判断字段是否被更新 新旧数据写入Audit Log表中