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,频率慢了,会导致读操作耗时长。
分享到:
相关推荐
MySQL数据库中的redo log(重做日志)是数据库高可用、事务提交等关键功能的核心组件之一。它的主要作用是在系统发生故障时,能够确保数据库能够恢复到故障点之前的正确状态,确保数据的持久性和一致性。在MySQL中,...
MySQL为什么需要binlog、redo log和undo log的知识点总结 MySQL数据库管理系统需要binlog、redo log和undo log三个重要的日志系统,以确保数据的一致性和持久性。下面是对这些日志系统的详细解释: 为什么需要分层...
Redo日志(Redo Log)是数据库事务日志的重要组成部分,它主要用于事务的恢复和数据的一致性保证。在MySQL数据库中,InnoDB存储引擎使用Redo日志来记录事务性的操作,并通过日志缓冲区(Redo Log Buffer)来缓存Redo...
Oracle DG下修改redo log和standby redo log日志大小.txt
事务日志机制主要由三部分组成:undo log、redo log 和 binlog。 undo log 是 Innodb 存储引擎层生成的日志,主要用于事务回滚和 MVCC。undo log 的主要作用是记录事务执行过程中的所有操作,以便在事务回滚时可以...
当然,除了redo log之外,数据库还使用其他类型的日志来记录操作,例如undo log,它用于回滚事务,以及binary log,用于复制和备份。每种日志都有其特定的格式和用途,在数据库中扮演着重要的角色。而文章结尾提到的...
在数据库系统中,Redo Log Buffer是一个非常重要的组成部分,它是用来暂存事务日志的内存区域。这个缓冲区中的日志数据是在事务提交之前写入的,它是用来保证事务持久化的重要机制。在MySQL数据库中,特别是InnoDB...
redo log分为在线redo log(online redo log)和归档redo log(archived redo log),前者是正在使用的日志,后者是已滚动并保存的历史记录。 在大多数数据库系统中,redo log并不是一条一条记录写入文件,而是以...
redo log,也称为重做日志,是数据库系统中用于记录事务对数据所做的更改的关键组件。在Oracle数据库中,redo log是持久化数据的重要部分,它确保了即使在系统崩溃或硬件故障后,数据库也能恢复到一致的状态。本篇将...
### Oracle Redo Log恢复步骤详解 #### 一、引言 在Oracle数据库系统中,Redo Log机制是确保数据一致性和可靠性的关键组件之一。它记录了所有对数据库所做的更改,以便在出现故障时能够进行恢复操作。本文档将详细...
redo log是数据库系统中至关重要的组件,特别是在关系型数据库管理系统(如MySQL、Oracle等)中,它用于记录事务对数据库所做的所有更改。在标题“行业-43 直接强行把redo log写入磁盘?非也,揭秘redo log buffer”...
Oracle重做日志(Redo Log)是Oracle数据库的一个关键组成部分,它记录了数据库的所有操作变化,保证了数据的完整性和一致性。在了解Oracle redo log之前,首先需要了解几个基础概念: 1. 数据库变化历史:Oracle ...
在Oracle数据库环境中,当面临丢失全部数据库文件及所有redo log文件的情况时,恢复过程变得非常复杂,因为这涉及到了数据库的全部数据文件、重做日志文件、控制文件甚至SPFILE。在这种极端情况下,通常只能依赖于...
### RAC数据库中Redo Log日志组大小与数量的调整 #### 一、背景介绍 在Oracle RAC (Real Application Clusters) 数据库环境中,Redo Log 日志是记录数据库事务更改的关键组件之一。Redo Log日志用于在数据库崩溃后...
redo log buffer,也被称为重做日志缓冲区,是数据库管理系统,尤其是Oracle数据库系统中一个至关重要的组件。它主要用于存储即将被写入到数据文件的事务日志记录。当数据库进行事务操作时,如插入、更新或删除数据...
MySQL数据库中有多种日志文件,其中最重要的三种是重做日志(redo log)、回滚日志(undo log)和二进制日志(binlog)。重做日志确保事务的持久性,回滚日志用于事务回滚,而二进制日志则用于数据复制和恢复。 1. ...
当Buffer Pool执行完增删改操作后,这些改动会被记录在redo log中,通常分为两部分:Innodb_log_buffer(内存中的重做日志缓冲区)和redo log file(磁盘上的重做日志文件)。Innodb_log_buffer存储最近的更改,当其...
MySQL数据库之undo log和redo log工作原理.png,这是一份图例,画图表示undo log和redo log的工作原理
当事务中的DML操作发生时,系统不仅在redo log中记录操作,还会在undo log中记录操作前的数据状态。如果事务正常提交,undo log中的信息将不再需要;但如果事务回滚,InnoDB可以通过undo log中的信息将数据恢复到...