MySQL三种日志:分析update语句执行流程以理解日志记录过程(binlog redolog undolog)

简单介绍了这3种日志之后,来看一下一条更新语句执行过程中这些日志是如何记录的。

update department set dept='产品' where id=2;

主要流程如下:

  1. 分析器对SQL 语句进行解析,通过词法和语法解析知道这条语句要做什么。
  2. 执行器通过InnoDB引擎提供的接口读取id=2这一行数据,如果数据在内存中就直接返回行数据,如果不在就从磁盘中读取。
  3. 执行器将这行数据的dept设置为 产品
  4. InnoDB将旧行数据写入undo log中。
  5. InnoDB将新行更新到内存。
  6. InnoDB写redo log并标记为prepare状态。
  7. 执行器写binlog,并把 binlog 写入磁盘。
  8. 执行器调用InnoDB的提交事务接口,InnoDB写redo log并标记为commit状态,更新完成。

本文介绍了MySQL的三种重要日志:物理日志 redo log和undo log 和逻辑日志 binlog,它还有其它日志,比如Error log、General query log、Relay log、Slow query log、DDL log等,他们都是MySQL数据库的重要组成部分,日志记录在一定程度上影响MySQL服务的性能,但他们是必不可少的,备份的频率需要根据具体业务来进行配置。


links:

https://devtest-notes.readthedocs.io/zh/latest/database/database-for-mysql-log-system.html#update

猜你喜欢

转载自blog.csdn.net/a772304419/article/details/132457828