栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

MySQL的日志系统
  • redo log(重做日志)
    • 作用:
    • 结构:
  • binlog(归档日志)
  • binlog和 redo log的区别
  • 执行一条更新语句的执行顺序

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;

(图片来自极客时间)
通过两阶段提交 保证了数据的一致性

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292331.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号