【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 主从复制,基于时间点的数据恢复
相关推荐
FL4m3Y4n1 天前
MySQL缓存策略
数据库·mysql·缓存
wsx_iot1 天前
TDengine学习
数据库·学习·tdengine
敲代码的瓦龙1 天前
Java?面向对象三大特性!!!
java·开发语言
不吃香菜的小趴菜1 天前
mysql数据库打包与导入
数据库·mysql
架构师沉默1 天前
AI 写的代码,你敢上线吗?
java·后端·架构
野犬寒鸦1 天前
Redis复习记录day1
服务器·开发语言·数据库·redis·缓存
njidf1 天前
实战:用Python开发一个简单的区块链
jvm·数据库·python
骑龙赶鸭1 天前
java开发项目中遇到的难点,面试!
java·开发语言·面试
Rick19931 天前
慢SQL优化
数据库·python·sql