MySQL实战45讲 学习笔记(二)

ordinaryBlog 2022-01-15 02:31:34 阅读数:331

学习 Mysql 实战 笔记

redo log(重做日志)

redo log为InnoDB特有的日志

作用:

用于记录事务操作的变化,记录的是数据修改之后的值。在MySQL宕机时,InnoDB通过redo log恢复数据,保证数据的完整性。即 保证即使数据库发生异常重启,之前提交的记录都不会丢失,这个能力称为crash-safe
在一条记录更新的时候,InnoDB引擎会先把记录写入redo log中,并更新内存。后续在系统较为空闲时,再将该操作写入磁盘中 (先写日志,再写磁盘

结构:

结构(图片来自极客时间)redo log是循环写入的,write pos和check point之间可用来记录新的操作。check point之后是当前要擦除的操作。

binlog(归档日志)

binlog是属于MySQL Server层的,又称归档日志,属于逻辑日志,记录的是语句的原始逻辑,是以二进制形式存储的。

binlog和 redo log的区别

  1. redo log 是 InnoDB 引擎特有的;binlog 是 MySQL 的 Server 层实现的,所有引擎都可以使用。
  2. redo log 是物理日志,记录的是“在某个数据页上做了什么修改”;binlog 是逻辑日志,记录的是这个语句的原始逻辑
  3. redo log 是循环写的,空间大小固定;binlog 是可以追加写入的。“追加写”是指binlog 文件写到一定大小后会切换到下一个,并不会覆盖以前的日志。

执行一条更新语句的执行顺序

update T set c=c+1 where ID=2;
图片来自极客时间
(图片来自极客时间)
通过两阶段提交 保证了数据的一致性

版权声明:本文为[ordinaryBlog]所创,转载请带上原文链接,感谢。 https://blog.csdn.net/kang2411212/article/details/120604767