mysql 原理 ~ redo
一 简介: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的更多相关文章
- MySQL的redo log结构和SQL Server的log结构对比
MySQL的redo log结构和SQL Server的log结构对比 innodb 存储引擎 mysql技术内幕 log buffer根据一定规则将内存中的log block刷写到磁盘,这个规则是 ...
- mysql中redo和binlog的区别
影响MySQL中redo的配置参数: innodb_log_file_size:指定每个redo日志大小,默认值48MB innodb_log_files_in_group:指定日志文件组中redo日 ...
- MySQL中Redo Log相关的重要参数总结
参数介绍 下面介绍.总结一下MySQL的Redo Log相关的几个重要参数:innodb_log_buffer_size.innodb_log_file_size.innodb_log_files ...
- MySQL中redo log、undo log、binlog关系以及区别
MySQL中redo log.undo log.binlog关系以及区别 本文转载自:MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结 ...
- MySql Undo Redo
Undo LogUndo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC). - 事务的原子性(Atomicity) ...
- mysql 原理 ~ 二阶段提交协议通说
一 简介: 今天是第二篇,讲解的是mysql的事务日志 二 具体 1 WAL技术(先写日志,再写磁盘) 2 binlog redolog 二阶段提交协议 目的 保持 redo log和binl ...
- mysql之 redo log
重做日志(redo log) 前言:之前一直弄不清楚 mysql 里面 bin log 和 innodb log 文件的区别,在脑子里面一直有个疑问 binlog 日志文件已经可以用来进行数据库的日志 ...
- MySQL原理
MySQL基础: sql语句的执行过程: 连接器:登录连接sql数据库 分析器:分析解读sql语句,并检查是否符合SQL语法规则 优化器:对实现方式进行优化,比如在查询时决定使用哪个索引. 执行器:执 ...
- Mysql原理与优化
原文:https://mp.weixin.qq.com/s__biz=MzI4NTA1MDEwNg==&mid=2650763421&idx=1&sn=2515421f09c1 ...
随机推荐
- spring中获取当前项目的真实路径
总结: 方法1: WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext ...
- typedef typename的用法
我自己最后在这篇文章里理解:[C++]typedef typename什么意思? typedef typename A::a_type b_type; 其中typename是告诉编译器A::a_typ ...
- linux 下配置svn
1.以前配置好的,没做笔记,忘记了.现在重新回忆 查找svn目录:find / -name svn 找到/projects/svn cd /projects/svn 看里面的配置: 查看配置 [roo ...
- shell脚本删除log日志
删除log文件简单shell脚本 经常会遇到日志把磁盘占满的情况,引起低级故障.我个人在实际工作中,尝试了如下的方法,比较简单,而且快捷有效. #!/bin/bash # /root/log_dele ...
- maven依赖包下载地址
http://maven.org http://mvnrepository.com/
- go build 和 go run区别
- Spring 在 xml配置文件 或 annotation 注解中 运用Spring EL表达式
Spring EL 一:在Spring xml 配置文件中运用 Spring EL Spring EL 采用 #{Sp Expression Language} 即 #{spring表达式} ...
- Office-kms
Office 2016 VOL Office Office 2016 Pro Plus 32 位专业增强版 文件名 SW_DVD5_Office_Professional_Plus_2016_W32_ ...
- Linux记录-CPU指标介绍
在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况.而监控CPU的性能一般包括以下3点:运行队列.CPU使用率和上下文切换. 对于每一个CPU来说运行队列最好不要超过3,例 ...
- CodeForces - 375A Divisible by Seven(数学)
https://vjudge.net/problem/48715/origin 题意:给出必定含1689四个数字的字符串,随意交换位置构造出能被7整除的数. 分析:数学思维题.观察发现1689的排列与 ...