【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 主从复制,基于时间点的数据恢复
相关推荐
小羊没烦恼!3 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里3 天前
java中的继承和多态的区别
java
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕3 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码4 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖4 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时4 天前
01-06-A-JVM排查实战详解
java·jvm
小白男神4 天前
MySQL进阶学习四(存储过程、游标、触发器)
mysql
这个DBA有点耶4 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
vipxieliang4 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot