| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> mysql的binlog,undo log,redo log -> 正文阅读 |
|
[大数据]mysql的binlog,undo log,redo log |
1. binlog 二进制日志binlog用于mysql记录写入性操作信息,以二进制的形式保存到磁盘中。
2. undo log 回滚日志数据库有四大特性:一致性、原子性、隔离性、持久性 而原子性就是依靠undo log来实现的,undo log记录了数据的逻辑变化。 比如一条插入(INSERT)操作,就会对应一条删除(DELETE)的undo log记录。对于每个修改(UPDATE)操作,就会对应一条相反的修改(UPDATE)的undo log记录。这样在发生异常时,就能依靠undo log来进行回滚。 在innodb中,每条数据都有两个隐藏字段,事务id(trx_id)和回滚指针(roll_pointer)。
由于每次变动都会先把undo日志记录下来,并用回滚指针(roll_pointer)指向undo日志地址。因此可以认为,对该条记录的修改日志串联起来就形成了一个版本链,版本链的头节点就是当前记录最新的值。 3. redo log 前滚日志redo log是InnoDB存储引擎独有的,它让MySQL拥有了崩溃恢复能力。 比如MySQL实例挂了或宕机了,重启时,InnoDB存储引擎会使用redo log恢复数据,保证数据的持久性与完整性。 redo log包含两个部分:一个是内存中的日志缓冲(redo log buffer),另一个是磁盘上的日志文件(redo log file)。 由于每次写数据都会和磁盘发生一次IO操作,很影响性能,所以mysql每执行一条写操作语句,就会先将记录写入redo log buffer(日志缓冲区),然后后续某个时间点再一次性将多个操作记录写到redo log file。 innode引擎记录一条数据一般是这样的流程:写操作 -->redo Log操作–>写入redo log buffer -->通过缓冲区,写入redo log file(记录到磁盘中)。 mysql支持三种将redo log buffer写入redo log file的时机,可以通过innodb_flush_log_at_trx_commit参数配置,各参数值含义如下:
redo log实际上记录数据页的变更,而这种变更记录是没必要全部保存,因此redo log实现上采用了大小固定,循环写入的方式,当写到结尾时,会回到开头循环写日志。 启动innodb的时候,不管上次是正常关闭还是异常关闭,总是会进行恢复操作。因为redo log记录的是数据页的物理变化,因此恢复的时候速度比逻辑日志(如binlog)要快很多。 前滚:事务提交之后,部分数据写入了磁盘,但是还有部分数据存在脏页上,并没有写入磁盘。此时设备宕机,没有写入磁盘的数据丢失。就要依赖redolog来恢复这部分数据。 回滚:事务还未提交,改动并没有完全生效,但是记录已经被修改。此时设备宕机,数据是有问题的,就要依赖undolog回滚改动。 二进制日志(binlog)是由数据库层面实现的,undo log和redo log是事务日志,undo log和redo log只存在于innodb中,myisam引擎是不存在undo log和redo log这两个日志文件的,所以myisam引擎是不支持事务的。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 10:40:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |