mysql事务(一)——redo log与undo log
数据事务
即支持ACID四大特性。
A:atomicity 原子性——事务中所有操作要么全部执行成功,要么全部执行失败,回滚到初始状态
C:consistency 一致性——数据库总是从一个一致性状态变化到另一个一致性状态
I:isolation 隔离性——一个事务所做的操作在事务提交前是否被另外一个事务可见,mysql可配置,用以适用不同场景
D:durability 持久性——事务一旦提交,所做操作永久保存(不是仅仅在内存中修改)
mysql通过redo log和undo log保障事务
redo log
事务中所有操作会先写到redo log中,然后再同步到数据库文件中。所以数据库文件进行事务操作修改时,redo log肯定已经记录了所有事务操作,此时即使数据库挂掉,事务操作也都已经持久化到redo log中了,数据库恢复后可以继续执行剩下操作。
redo log有两部分组成,redo log buffer与redo log file。如果每个事务的redo log都实时写到file中,再写到数据文件中,那么性能会比较差,所以可以先把一定时间间隔中的事务操作记录到buffer中,然后统一刷新到file中(此时数据库文件的刷新不一定晚于重做日志文件的刷新)。
redo log使用buffer缓存,丢失了数据持久性,数据库宕机时,没有持久化到redo log file中的事务操作也会丢失。此时数据库数据需要回滚到这些丢失事务之前的状态,undo log正好记录了事务之前的状态。
redo log是物理日志,记录里的是对数据库页的操作,不是sql语句,具有幂等性。
log group包含多个redo log,redo log循环覆盖log group中的文件。
undo log
undo log记录了事务提交之前的数据状态。所以当事务操作同步到数据文件仅仅执行了一半就失败了,恢复后无法找到剩余事务操作,那就只好回滚到事务执行前了。这是就可以使用undo log了。
不同于redo log存放在单独文件中,undo log存放在数据库内部特殊的段中(undo segment),这个段位于共享表空间中。可以知道,undo log必然发生在事务执行之前,所以事务操作执行开始了,undo log必然已经存在了。
redo log与binlog的区别
mysql只有innodb支持事务,redo log和undo log都是innodb的产物。binlog也可以用作数据恢复,不过它是整个mysql的日志,对于所有存储引擎都生效。
binlog存储的是逻辑sql,这一点与redo log中的物理格式不同。
binlog在事务结束后才写进文件,redo log在事务执行中写进文件。
redo log参数设置
执行show global variables like '%innodb%log%';查看参数
1、innodb_log_file_size:redo log大小,单位字节
2、innodb_log_files_in_group:redo log group大小,日志组中存在多少个redo log文件
3、innodb_log_group_home_dir:redo log路径,上图表示同数据文件路径
4、innodb_log_buffer_size:重做日志缓存大小
5、innodb_flush_log_at_trx_commit:事务从redo log buffer刷新到redo log file策略
默认值为1,表示redo log事务提交时,立即将操作从buffer刷入file中(commit ->redo log buffer->os buffer->redo log file)。
0表示每innodb_flush_log_at_trx_commit秒钟将redo log buffer刷入redo log file一次。数据库宕机,最多丢失innodb_flush_log_at_trx_commit秒操作。
2表示每次事务提交,都会将redo log buffer写入os buffer,每innodb_flush_log_at_trx_commit秒钟将os buffer同步到redo log file中。这种情况下,数据库宕机,服务器没有宕机,数据库恢复后,已经写入os buffer的事务操作还可以写到redo log file中。
6、innodb_flush_log_at_timeout:配合innodb_flush_log_at_trx_commit使用,表示redo log多久从buffer刷入file中。
mysql事务(一)——redo log与undo log的更多相关文章
- mysql事务、redo日志、undo日志、checkpoint详解
转载: https://zhuanlan.zhihu.com/p/34650908 事务: 说起mysql innodb存储引擎的事务,首先想到就是ACID(不知道的请google),数据库是如何做到 ...
- 详细分析MySQL事务日志(redo log和undo log)
innodb事务日志包括redo log和undo log.redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作. undo log不是redo log的逆向过程,其实它 ...
- 详细分析MySQL事务日志(redo log和undo log) 表明了为何mysql不会丢数据
innodb事务日志包括redo log和undo log.redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作. undo log不是redo log的逆向过程,其实它 ...
- 【MySQL (六) | 详细分析MySQL事务日志redo log】
Reference: https://www.cnblogs.com/f-ck-need-u/archive/2018/05/08/9010872.html 引言 为了最大程度避免数据写入时 IO ...
- InnoDB事务日志(redo log 和 undo log)详解
数据库通常借助日志来实现事务,常见的有undo log.redo log,undo/redo log都能保证事务特性,undolog实现事务原子性,redolog实现事务的持久性. 为了最大程度避免数 ...
- 必须了解的mysql三大日志-binlog、redo log和undo log
日志是 mysql 数据库的重要组成部分,记录着数据库运行期间各种状态信息.mysql日志主要包括错误日志.查询日志.慢查询日志.事务日志.二进制日志几大类.作为开发,我们重点需要关注的是二进制日志( ...
- 深入理解MySQL系列之redo log、undo log和binlog
事务的实现 redo log保证事务的持久性,undo log用来帮助事务回滚及MVCC的功能. InnoDB存储引擎体系结构 redo log Write Ahead Log策略 事务提交时,先写重 ...
- 基于Redo Log和Undo Log的MySQL崩溃恢复流程
在之前的文章「简单了解InnoDB底层原理」聊了一下MySQL的Buffer Pool.这里再简单提一嘴,Buffer Pool是MySQL内存结构中十分核心的一个组成,你可以先把它想象成一个黑盒子. ...
- MySQL中redo log、undo log、binlog关系以及区别
MySQL中redo log.undo log.binlog关系以及区别 本文转载自:MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结 ...
随机推荐
- javap(反汇编命令)详解
javap是JDK自带的反汇编器,可以查看java编译器为我们生成的字节码.通过它,我们可以对照源代码和字节码,从而了解很多编译器内部的工作. 语法: javap [ 命令选项 ] class. . ...
- 用js内置对象XMLHttpRequest 来用ajax
步骤: /* 用XMLHTTPRequest来进行ajax异步数据交交互*/ 主要有几个步骤: //1.创建XMLHTTPRequest对象 //最复杂的一步 if (window.XMLHttpRe ...
- PHPStorm 注册码&主题皮肤
JetBrains PhpStorm 注册方法: 用浏览器打开 http://idea.lanyus.com/ 点击页面中的“获得注册码” 然后打开PhpStorm,在注册时切换至Activation ...
- [转][darkbaby]任天堂传——失落的泰坦王朝(中)
TV游戏产业历史上曾有过太多表里不一的外交辞令,然而当年SQUARE和任天堂分道扬镳的真正原因确实如坂口博信在1996年2月29日的PS版 <FFVII>发表会上宣称的那样:“虽然之前有过 ...
- Mongodb 副本集 数据同步简单测试
副本集的搭建,请见 CENTOS6.5 虚拟机MONGODB创建副本集 接下来将简单说明下副本集之间的数据同步. 1.首先,进入primary节点 MOGO_PATH/bin/mongo -por ...
- html 在一个超链接上面,鼠标移动上去时,也显示一串文字,如何实现
a标签的title属性,对title属性赋值即可.例如:<a href="http://www.baidu.com/" title="跳转到百度"> ...
- PAT甲1004 Counting Leaves【dfs】
1004 Counting Leaves (30 分) A family hierarchy is usually presented by a pedigree tree. Your job is ...
- zero-shor learning 数据集
OSR数据集下载地址: http://people.csail.mit.edu/torralba/code/spatialenvelope/ Relative Attributes Marr Priz ...
- hihocoder 1323 - 回文字符串 - [hiho一下162周][区间dp]
用dp[i][j]表示把[i,j]的字符串str改写成回文串需要的最小操作步数. 并且假设所有dp[ii][jj] (ii>i , jj<j)都为已知,即包括dp[i+1][j].dp[i ...
- InfluxDB通过HTTP API
SELECT "value" FROM "online_user_counter" curl -POST http://localhost:8086/query ...