MySQL篇:日志

前言

MySQL中常见的日志:

  1. 重做日志(Redo Log)
    用途: 保证事务的持久性,记录事务对数据库所做的所有修改。
    内容: 记录事务对数据页的物理修改,而不是逻辑修改。
    配置: 配置文件中设置 innodb_log_group_home_dir 和 innodb_log_files_in_group 参数。

  2. 撤销日志(Undo Log)
    用途: 保证事务的原子性,用于事务的回滚和 MVCC 实现。
    内容: 记录事务对数据页的逻辑修改,以支持事务的回滚。
    配置: 通常无需人工配置,由存储引擎自动管理。

  3. 二进制日志 (Binary Log): 

        用途:记录对数据库的修改操作,用于主从复制,点播恢复等

        内容:记录了对数据库执行的所有修改操作的语句或者原始二进制数据。

        配置:通过配置文件或动态设置 log_bin 参数启用。

1. Redo Log 重做日志

        重做日志保存的是事务提交时的物理修改,是用来实现事务的持久性的。

它由两部分组成:redo log buffer(重做日志缓冲区),  redo log file(重做日志文件)

前者是在内存中的,后者是在磁盘中的。

        当执行 Update, Delete 操作时,会先在一个叫 Buffer Pool 的mysql的缓存池里面进行更新数据,但是Buffer Pool 不会立马把数据刷新到磁盘,因为更新和删除操作时,会操作随机的数据页,也就是会进行随机磁盘IO,这样效率是很低的。所以就会先把修改记录写到redo log buffer中,事务提交的时候,会把redo log buffer中的数据刷新到磁盘中的redo log file中,这样即使Buffer Pool刷新脏页数据到磁盘的过程中发生错误,也能根据redo log buffer进行数据恢复。

2. Undo Log 回滚日志

        回滚日志用于记录数据修改前的信息,并能提供数据的回滚,也是mvcc中的一个组成部分。

比如,如果你进行了一个 Update操作,那么会在日志里面记录一条相反的Update操作,如果你进行了一个Delete操作, 那么会在日志里记录一条对应的Insert操作。

3. bin Log 二进制日志

记录的是对数据库执行的所有修改操作,但是是逻辑日志.它一般用于主从复制和点播恢复等。

相关推荐

  1. MySQL

    2024-07-10 23:28:06       9 阅读

最近更新

  1. Oracle(15)什么是索引(Index)?

    2024-07-10 23:28:06       0 阅读
  2. CSS 的@media规则,响应式的一种解决方案

    2024-07-10 23:28:06       0 阅读
  3. MySQL

    MySQL

    2024-07-10 23:28:06      0 阅读
  4. C++中的atomic:原子

    2024-07-10 23:28:06       0 阅读
  5. Nacos 面试题及答案整理,最新面试题

    2024-07-10 23:28:06       0 阅读
  6. 【Unity】RPG2D龙城纷争(十五)特殊加成型要诀

    2024-07-10 23:28:06       0 阅读

热门阅读

  1. python库 - sentencepiece

    2024-07-10 23:28:06       7 阅读
  2. drawio打开不显示,不在当前屏幕的解决方案

    2024-07-10 23:28:06       7 阅读
  3. 贪心算法-以高校教师信息管理系统为例

    2024-07-10 23:28:06       7 阅读
  4. 2024百度之星第三场第一题 数星星

    2024-07-10 23:28:06       8 阅读
  5. 【安卓学习】复选框CheckBox

    2024-07-10 23:28:06       7 阅读
  6. 人机交互中信息之间的距离

    2024-07-10 23:28:06       9 阅读
  7. xml_woarchive undefined symbol

    2024-07-10 23:28:06       6 阅读
  8. 基于深度学习的安全帽检测

    2024-07-10 23:28:06       8 阅读
  9. swift获取app网络和本地网络权限

    2024-07-10 23:28:06       9 阅读
  10. C语言获取当前时间

    2024-07-10 23:28:06       11 阅读