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 二进制日志

        记录的是对数据库执行的所有增删改操作(不包括查询),但是是逻辑日志.它一般用于主从复制和点播恢复等。

他有三种日志格式,如下:

         在ROW格式下,会记录每次修改前后的行数据记录,而在STATEMENT格式下,会记录每次修改的sql语句。

同时,要想删除日志,也可以使用以下的命令:

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值