【八股学习】MySQL——三大日志、索引

首先,三大日志分别是:redo log、bin log、undo log
重点也就是如下部分:每个日志的作用、刷盘时机

日志

redo log

作用

让 MySQL 拥有了崩溃恢复能力。比如 MySQL 实例挂了或宕机了,重启时,InnoDB 存储引擎会使用 redo log 恢复数据,保证数据的持久性与完整性

刷盘时机

在查询时,InnoDB会将数据页读入 Buffer Pool 以便后续查找,减少磁盘IO。
同理,更新数据时,Buffer Pool 中存在要更新的数据就直接在其中更新,然后记录到 redo log buffer,随后刷盘到磁盘中的 redo log。
innodb_flush_log_at_trx_commit有三种策略

  1. 0:事务提交不刷盘、性能最高。但是如果MySQL挂了或者发生宕机,会丢失1s的事务
  2. 1(默认):每次事务提交都刷盘、性能最低,不会丢失任何数据
  3. 2:每次事务提交只把log buffer里的redo log写入 page cache。宕机会有1s损失。
    当然,没有提交事务的redo log也有可能刷屏。
    因为后台线程每秒都将 buffer 中的数据写入 page cache再刷盘。
    数据页刷盘是随机写,并且每次只更改了数据页中 n Byte的数据,性能很差。
    但是redo log 一行记录几十字节,并且是顺序写,所以刷盘很快
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值