【MySQL | 第一篇】undo log、redo log、bin log三者之间的区分?

undo log、redo log、bin log三者之间的区分?

产生的时间点、日志内容、用途 三方面展开论述即可

1.undo log------撤销日志

  • 时间点:事务开始之前产生,根据当前版本的数据生成一个undo log,也保存在事务开始之前

  • 作用:在InnoDB存储引擎中,用于保存旧的数据版本,以便在事务回滚时使用。

  • 内容:旧版本的数据

  • 用途:

    • 数据的回滚(撤销)
    • 保证MVCC
    • 支持事务的ACID特性,确保 数据原子性和一致性

2.redo log------重做日志

  • 时间点:事务开始之后产生,在事务的执行过程中写入日志数据

  • 作用:在InnoDB存储引擎中用于确 保事务的持久性

  • 内容:物理日志,对数据所做的修改。

  • 用途:在系统崩溃时,用于同步数据。

  • 处理过程

    • 分为两部分,重做日志缓存(redo log buffer,存在于内存);重做日志文件(redo log file,存在于磁盘)
    • 当事务提交之后,将所有修改信息存储到日志文件中,而不是磁盘中,即WAL(Write-Ahead-Logging)预写日志系统
    • 好处:
      • 保证事务的持久性
      • 只记录对数据的修改,数据比一页数据小很多,大大减少IO频率
      • redo log写入是顺序写入,而修改磁盘是随机写入

3.bin log------二进制日志

  • 作用:记录所有修改数据的SOL语句,用于数据复制和数据恢复。
  • 内容:插入、更新、删除等修改数据或数据结构的操作。
  • 用途:
    • 复制:在主从复制中,从服务器会读取主服务器的二进制日志文件,以保持与主服务器的数据同步。
    • 数据恢复:可以使用二进制日志进行点时间恢复。

4.Error log------错误日志

  • 作用:记录mysqld启动、运行或停止时出现的问题。
  • 内容:包括启动、运行或关闭mysql时的问题、以及服务或服务器出错的信息。
  • 用途:诊断问题,确定哪些客户端尝试连接,以及是否出现了表的损坏等。

5.General Query log------查询日志

  • 作用:记录所有到MVSOL服务器的连接和查询。
  • 内容:客户端连接及每个连接发送给服务器的所有SOL查询。
  • 用途:分析和查找可能存在的问题。但在生产环境中,常常因为性能原因而不启用。

6.Slow Query log慢查询日志

  • 作用:记录查询执行时间超过long query time值的所有SOL查询。
  • 内容:响应时间超出预设阈值的SOL查询。
  • 用途:帮助找到、分析并优化性能较差的查询。

7.小结

产生时间点 内容 用途
undo log 事务开始之前写入并保存 逻辑日志,旧版本数据 回滚,提供多版本并发控制下的读,保证事务的原子性和一致性
redo log 事务开始之后开始,根据事务执行写入 物理日志,对数据的修改 mysql宕机,用于恢复数据到磁盘,保证事务的持久性
bin log 事务提交的时候,一次性将事务中的所有sql记录到bin log 逻辑日志,事务中所有的sql 主从复制,基于时间点的数据恢复
相关推荐
wand codemonkey15 分钟前
SpringbootWeb【入门】+MySQL【安装】+【DataDrip安装 】+【连接MySQL】
java·mysql·mybatis
廿一夏8 小时前
MySql存储引擎与索引
数据库·sql·mysql
Mahir088 小时前
Spring 循环依赖深度解密:从问题本质到三级缓存源码级解析
java·后端·spring·缓存·面试·循环依赖·三级缓存
RyFit9 小时前
SpringAI 常见问题及解决方案大全
java·ai
石山代码10 小时前
C++ 内存分区 堆区
java·开发语言·c++
绝知此事10 小时前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表
无风听海10 小时前
C# 隐式转换深度解析
java·开发语言·c#
lzhdim10 小时前
SQL 入门 15:SQL 事务:从 ACID 到四种常见的并发问题
数据库·sql
瀚高PG实验室10 小时前
瀚高企业版V9.1.1在pg_restore还原备份文件时提示extract函数语法问题
数据库·瀚高数据库
一只大袋鼠11 小时前
Git 进阶(二):分支管理、暂存栈、远程仓库与多人协作
java·开发语言·git