redo log用途

1. 用途

保证数据的更新操作不丢失,同时保证了性能

2. 如何没有redo log,如何保证数据库的更新操作不会由于数据库的宕机而丢失?

对数据库进行修改,应该是先从磁盘读取数据到内存中,然后在内存中对数据进行修改,然后再将数据写入到磁盘中,这样才能数据库

才能返回数据修改成功

按照数据库处理流程来说,首先应该是通过连接器接收到一条SQL语句,然后解析器对这条SQL进行词法解析,然后由优化器生成一个

执行计划,接下来就交由执行器来执行这个计划,执行器将会调用引擎接口从而实现更新操作

这里就存在一个问题,内存中不存在要修改的数据所在的数据页,此时就要将该数据页从磁盘中读取出来,然后修改完成之后,为了防止

数据库奔溃,就需要将数据写入磁盘中,从这个角度来看,一次数据库的更新操作,就要操作两次磁盘了

3. 如何使用redo log来保证更新操作的不丢失?

数据修改成功之后,就需要将该数据页刷到磁盘中去,以防丢失,但是现在已经引入了redo log,此时只需要这个修改信息写入到redo log当中,也就是将哪个数据页哪里发生了修改写入到redo log当中,而不需要将修改过的整个数据页刷到磁盘当中去

4. 写redo log同样也是一次磁盘的写操作,凭什么说它的性能就更高一点呢?

写redo log还有刷数据页到磁盘中去,都是磁盘的的写操作,但是呢,将修改信息写入到redo log当中,只需要数据顺序写入redo log

当中,这里其实就是一次顺序写磁盘的操作.

而将数据页刷到磁盘中,因为一个修改操作可能会同时修改多个数据页,这些数据页又不是连续的,此时就意味着随机写磁盘

并且,对于MySQL来说,一个数据页是16kb,可能一次性更新多个数据页,此时可能需要随机写入几百k的数据

而对于redo log,一次修改可能只需要写入几k的数据,数据量相对于刷数据页的方式是大大减少的

比较一下写redo log和刷数据页,写redo log是磁盘的顺序写,小数据量,而刷数据页到磁盘可能就意味着随机写,而且还是

大数据量的,两者一比较,写redo log的性能可能比刷数据页的性能高100倍

5. 综上所述,redo log能够在保证数据不丢失的时候,同时保证了性能

redo log的用处的更多相关文章

  1. 3000帧动画图解MySQL为什么需要binlog、redo log和undo log

    全文建立在MySQL的存储引擎为InnoDB的基础上 先看一条SQL如何入库的: 这是一条很简单的更新SQL,从MySQL服务端接收到SQL到落盘,先后经过了MySQL Server层和InnoDB存 ...

  2. [转]undo log与redo log原理分析

    数据库通常借助日志来实现事务,常见的有undo log.redo log,undo/redo log都能保证事务特性,这里主要是原子性和持久性,即事务相关的操作,要么全做,要么不做,并且修改的数据能得 ...

  3. Oracle Redo Log 机制 小结(转载)

    Oracle 的Redo 机制DB的一个重要机制,理解这个机制对DBA来说也是非常重要,之前的Blog里也林林散散的写了一些,前些日子看老白日记里也有说明,所以结合老白日记里的内容,对oracle 的 ...

  4. 关于MySQL redo log,挖些坑,慢慢填

    1. 为什么可以设置为多个redo log ? (innodb_log_files_in_group,默认值和推荐值都是2,我们线上设的统一为4): 2. 什么条件下会触发刷脏?除了master_th ...

  5. Oracle Dataguard Standby Redo Log的两个实验

    在Data Guard环境中,Standby Redo Log是一个比较特殊的日志类型.从最新的DG安装指导中,都推荐在Primary和Standby端,都配置Standby Redo Log. 简单 ...

  6. [置顶] How to dump redo log entry?

    1.转储针对特定数据块(4号文件的第10-20号数据块)修改的 redo entry select file#,name,blocks from v$datafile;      FILE# NAME ...

  7. redo log write和flush

    http://bbs.chinaunix.net/thread-1753130-1-1.html 在事务提交时innobase会调用ha_innodb.cc 中的innobase_commit,而in ...

  8. 14.7.2 Changing the Number or Size of InnoDB Redo Log Files 改变InnoDB Redo Log Files的数量和大小

    14.7.2 Changing the Number or Size of InnoDB Redo Log Files 改变InnoDB Redo Log Files的数量和大小 改变 InnoDB ...

  9. 14.4.4 Redo Log Buffer

    14.4.4 Redo Log Buffer redo log buffer 是内存区域持有数据被写入到redo log. Redo log buffer size 是通过 innodb_log_bu ...

  10. mysql redo log

    mysql> show variables like '%innodb_log_file_size%'; +----------------------+-----------+ | Varia ...

随机推荐

  1. fork子进程父进程死掉之后,getppid()不为1的解决办法

    代码例子:程序在执行之后,会一直死在while中,打印发现当父进程被终止,getppid() 的值也不为1 pid_t pid;if((pid = fork()) < 0){ printf(&q ...

  2. Windows MFC HTTP GET请求 函数流程

    Windows MFC HTTP GET请求 函数流程 1 CString m_strHttpUrl(_T("http://10.200.80.86:8090/course/upload&q ...

  3. 「SOL」E-Lite (Ural Championship 2013)

    为什么这数据能水到可以枚举角度 ac 啊 # 题面 给你 \(n\) 个平面向量 \((x_i,y_i)\),对于每个 \(k=1\sim n\),求「从给出的 \(n\) 个向量中不重复地选择 \( ...

  4. 从Sql Server转战Oracle 之 变量声明

    1 --两种声明方法:没有sql所谓的select或者select @para from table 以及 set 赋值,且赋值的时候需要在begin end事务内 2 一 直接声明 3 declar ...

  5. .NET Core使用 Coravel 实现任务调度

    前言 前段时间需要在一个新项目里添加两个后台任务,去定时请求两个供应商的API来同步数据:由于项目本身只是一个很小的服务,不太希望引入太重的框架,同时也没持久化要求:于是我开始寻找在Quartz.Ne ...

  6. 书剑恩仇录<随笔>感想

    书剑恩仇录是去年读完的,剧情上的细节处已经遗忘甚多,但本书也金庸先生的第一篇长篇武侠小说.此书的重要性不言而喻 摘要:故事的开头源于武当派陆菲青.因犯了杀人官司隐姓埋名为李沅芷的教书先生.因仇家寻上门 ...

  7. 2020-2021第一学期2024"DCDD"小组第十一周讨论

    2020-2021第一学期"DCDD"第十一周讨论 小组名称:DCDD 小组成员:20202403孟凡斌.20202411陈书桓.20202416刘铭睿.20202420黄椿淇 照 ...

  8. infoq上看视频1(持续更新)

    打破工程师思维 http://www.infoq.com/cn/presentations/break-engineer-thinking 百姓网人: 从技术走向产品的那点儿事 http://www. ...

  9. vue实现自定义字体库

    先看效果是不是你所需要的,再看具体如何实现. 效果如下图所示: 有些字体需要下载,用图片就会变得很不清楚,这样我们就需要去下载字体库,操作步骤如下: 首先找到需要下载的字体库 然后放在项目里面 然后定 ...

  10. 微信小程序ECharts通过调用api接口实现图表的数据可视化

    小程序ECharts使用接口调入数据 首先附上js文件链接:axios.js 提取码:AxIo 将此放到小程序目录下的utils文件夹下 在已经完成图表的js文件中完成以下修改: ①引用axios.j ...