`

redo log

 
阅读更多
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,频率慢了,会导致读操作耗时长。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics