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. Token过期导致页面多个请求报错提示多次

    关于Token过期导致页面多个请求报错提示的问题 我们先在全局定义一个变量(global.js)来控制token是否过期 export default { // token无效标记 TokenInva ...

  2. 网络编程之 urllib 模块

    首先urlib并不是一个很好用的方法,这里仅作简单介绍.一般我们用requests方法来代替urlib方法. 1. get请求 1 from urllib import request 2 url = ...

  3. D. Steps to One

    题意 初始有一个空数组\(a\),接下来每次操作会这么做: 在\([1,n]\)中选择一个数,将其拼接在数组\(a\)后. 计算数组\(a\)的\(\gcd\). 如果结果是\(1\),退出. 否则, ...

  4. RabbitMQ消息堆积问题?

    原因: 有时可能因为消费者自身代码问题,导致没办法正常消费消息,那么就会导致消息队列中会堆积大量的消息: 或因为同一时间来了非常多的消息,消费者没办法及时消费,导致消息队列中堆积了大量消息. 解决办法 ...

  5. 我的第三次JAVA作业

    ------------恢复内容开始------------ 1.对象与对象引用的区别是什么? 请举例说明 创建对象被分配在堆中,对象引用分配在栈中. eg. new FighterPlane(); ...

  6. IDEA2021 在jsp文件中 写out报错

    报错原因: 是因为没有关联好服务器: 解决方案 File --> Project structure --> Modules --> 选中当前的模板 --> Dependenc ...

  7. 联想lxh-ekb-10ya键盘拆机

    今天清理想清理一下键盘,键盘很多年了,没找到拆机教程,注意,如果没有配套螺丝可用拆手机的小螺丝刀,太次的螺丝刀容易弄坏螺丝 1.先上型号 2.第一步肯定是拆螺丝,要注意的是除了明确能看到的螺丝外,标签 ...

  8. api进阶Day3使用文件流对文件进行复制、使用块读写一组字节,使用byte数组提高读写的效率、返回当前时间。

    使用文件流对文件进行复制: package io; import java.io.FileInputStream; import java.io.FileNotFoundException; impo ...

  9. 熟悉Hadoop及其操作 3

    启动hdfs 查看与创建hadoop用户目录. 在用户目录下创建与查看input目录.   将hadoop的配置文件上传到hdfs上的input目录下.运行MapReduce示例作业,输出结果放在ou ...

  10. C# Http 服务器get pos 请求 获取头信息 iOS 客户端联调

    using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Text ...