一 简介:redo log
二 文件
   ib_logfile0 ib_logfile1 两个redo log 默认为一组 循环覆盖写入
三 相关参数
   innodb_log_file_size=256M 不能太大也不能太小,推荐256M
  innodb_log_file_in_group=16M redo log buffer的大小,不宜太大
  innodb_log_buffer_size=2 日志文件数量默认为2,可根据情况适当调节
四 redo log 与binlog的不同
  1 产生的机制不同
     redo log在innodb引擎层产生
     binlog 在mysql server上层生成
 2 记录的内容类型不一样
    redo log是物理格式日志,记录着每个页的修改的逻辑操作,所以具体来说 redo log记录的是逻辑物理操作
    binlog 是逻辑格式日志,仅仅记录着执行的sql语句,属于逻辑操作
 3 mysql redo+binlog共同构成了一个完整事务的提交,俗称二阶段提交,通过共有的xid方式确定事务的完整性
六 redo log的特点
 1 redo追加是顺序写入
 2 redo_log_buffer->redo_log_file 事务生成redo log到文件的方式
 3 并发事务
   1 并发的事务共享redo_log_buffer,它们的Redo Log按语句的执行顺序,依次交替的记录在一起,
   eg:记录1: <trx1, insert …>
        记录2: <trx2, update …>
        记录3: <trx1, delete …>
        记录4: <trx3, update …>
  2 并发的事务通过加锁的方式保证事务的顺序写入,直到8.0才实现无锁化的顺序写入
  3. 因为C的原因,当一个事务将Redo Log写入磁盘时,也会将其他未提交的事务的日志写入磁盘。
  4. Redo Log上只进行顺序追加的操作,当一个事务需要回滚时,它的Redo Log记录也不会从Redo Log中删除掉。
七 redo log buffer刷新机制
  1 事务提交时候(commit=1)
  2 当log buffer中有一半的内存空间已经被使用
  3 当无法进行覆盖log文件时,触发check point机制
八 LSN号
 1 具体说明
   Log sequence number log_buffer_lsn 缓存记录
  Log flushed up to log_file_lsn 文件记录
  Last checkpoint at log_file_start_lsn  文件开头记录 用来记录已经执行CKPT到达一致的位置点,是不断更新的

2 LSN号和位置
  mtr_commit执行时会给每个log record生成一个lsn,此lsn确定了其在log file中的位置,会在指定位置进行加锁,直到此事务进行写入

3 LSN与故障恢复

1 LSN类型为文件开头记录的位置为check point三者一致的位置点,之后进行整体重做或者回滚

2 redo 记录LSN号和 page lSN号会进行对比

九 具体的记录内容

1 DML操作导致的页面变化,均需要记录Redo日志

2 聚簇索引/二级索引/Undo页面修改,均需要记录Redo日志;

mysql 原理 ~ redo的更多相关文章

  1. MySQL的redo log结构和SQL Server的log结构对比

    MySQL的redo log结构和SQL Server的log结构对比 innodb 存储引擎 mysql技术内幕 log buffer根据一定规则将内存中的log block刷写到磁盘,这个规则是 ...

  2. mysql中redo和binlog的区别

    影响MySQL中redo的配置参数: innodb_log_file_size:指定每个redo日志大小,默认值48MB innodb_log_files_in_group:指定日志文件组中redo日 ...

  3. MySQL中Redo Log相关的重要参数总结

      参数介绍 下面介绍.总结一下MySQL的Redo Log相关的几个重要参数:innodb_log_buffer_size.innodb_log_file_size.innodb_log_files ...

  4. MySQL中redo log、undo log、binlog关系以及区别

    MySQL中redo log.undo log.binlog关系以及区别 本文转载自:MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结 ...

  5. MySql Undo Redo

    Undo LogUndo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC). - 事务的原子性(Atomicity) ...

  6. mysql 原理 ~ 二阶段提交协议通说

    一 简介: 今天是第二篇,讲解的是mysql的事务日志 二 具体 1 WAL技术(先写日志,再写磁盘) 2 binlog redolog 二阶段提交协议     目的 保持 redo log和binl ...

  7. mysql之 redo log

    重做日志(redo log) 前言:之前一直弄不清楚 mysql 里面 bin log 和 innodb log 文件的区别,在脑子里面一直有个疑问 binlog 日志文件已经可以用来进行数据库的日志 ...

  8. MySQL原理

    MySQL基础: sql语句的执行过程: 连接器:登录连接sql数据库 分析器:分析解读sql语句,并检查是否符合SQL语法规则 优化器:对实现方式进行优化,比如在查询时决定使用哪个索引. 执行器:执 ...

  9. Mysql原理与优化

    原文:https://mp.weixin.qq.com/s__biz=MzI4NTA1MDEwNg==&mid=2650763421&idx=1&sn=2515421f09c1 ...

随机推荐

  1. spring中获取当前项目的真实路径

    总结: 方法1: WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext ...

  2. typedef typename的用法

    我自己最后在这篇文章里理解:[C++]typedef typename什么意思? typedef typename A::a_type b_type; 其中typename是告诉编译器A::a_typ ...

  3. linux 下配置svn

    1.以前配置好的,没做笔记,忘记了.现在重新回忆 查找svn目录:find / -name svn 找到/projects/svn cd /projects/svn 看里面的配置: 查看配置 [roo ...

  4. shell脚本删除log日志

    删除log文件简单shell脚本 经常会遇到日志把磁盘占满的情况,引起低级故障.我个人在实际工作中,尝试了如下的方法,比较简单,而且快捷有效. #!/bin/bash # /root/log_dele ...

  5. maven依赖包下载地址

    http://maven.org http://mvnrepository.com/

  6. go build 和 go run区别

  7. Spring 在 xml配置文件 或 annotation 注解中 运用Spring EL表达式

    Spring  EL 一:在Spring xml 配置文件中运用   Spring EL Spring EL 采用 #{Sp Expression  Language} 即 #{spring表达式} ...

  8. Office-kms

    Office 2016 VOL Office Office 2016 Pro Plus 32 位专业增强版 文件名 SW_DVD5_Office_Professional_Plus_2016_W32_ ...

  9. Linux记录-CPU指标介绍

    在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况.而监控CPU的性能一般包括以下3点:运行队列.CPU使用率和上下文切换. 对于每一个CPU来说运行队列最好不要超过3,例 ...

  10. CodeForces - 375A Divisible by Seven(数学)

    https://vjudge.net/problem/48715/origin 题意:给出必定含1689四个数字的字符串,随意交换位置构造出能被7整除的数. 分析:数学思维题.观察发现1689的排列与 ...