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 ...
随机推荐
- Oracle提权
1.创建JAVA包 select dbms_xmlquery.newcontext('declare PRAGMA AUTONOMOUS_TRANSACTION;begin execute immed ...
- opencv: 基本知识(二);
1.cvArr* 与 cv::Mat之间的转换; cv::Mat ---- > cvArr* cv::Mat img; IplImage temp = IplImage(img); cvArr ...
- git lg 使用 转
命令: git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yello ...
- Process和ProcessBuilder入门【原】
ProcessBuilder优点 ProcessBuilder(XXX).start()和Runtime.exec(XXX)功能相同,主要优点在使用过程中感受有: 前者是jdk1.5后的新方式 配置环 ...
- Tomcat与Web应用
1.Web是一种分布式应用架构,旨在共享分布 在网络上的各个Web服务器中的所有互相链接的信息.Web使用超级文本技术(HTML)来链接网络上的信息,信息存放在服务器端,客户机通过浏览器查找网络中的各 ...
- Kafka安装部署
1.从官网下载安装包,并通过Xftp5上传到机器集群上 下载kafka_2.11-1.1.0.tgz版本,并通过Xftp5上传到hadoop机器集群的第一个节点node1上的/opt/uploa ...
- vue使用字体图标转码问题
使用iconfont字体之后,出现的是一个方框,而没有出现相应的图标 需要通过String.fromCharCode方法转成指定unicode编码对应的十六进制字符 <div class=&qu ...
- while循环、格式化输出、运算符和编码初识
while循环 1. while循环的结构 while 条件: 执行语句1 执行语句2 i = 0 while i < 10: print(i) i += 1 运行结果 0 1 2 3 4 5 ...
- SpringBoot系列: Actuator监控
Sprng Boot 2 actuator变动加大, 网上很多资料都都已经过期. ============================配置项============================ ...
- sql parser
最近在整理很多SQL代码, 需要分析出每个SQL的目标表和源表各有哪些, 网上没有找到工作具, 打算写个工具. Java调研结果:1. 商业组件包 sqlparser 有试用版组件, 限制SQL少于1 ...