8、innodb redo log

redo log 重做日志,innodb存储引擎实现的日志,用于实现持久化特性,并提高写入磁盘的速度。

计算机系写入数据比较快的方式:

  • 内存写入
  • 磁盘顺序写

如果没有redo log,因为要保证事务,修改后的数据就不能以异步io的形式写入到ibd文件,ibd是分散的数据,写入比较占用时间,最终会导致mysql的性能很差。

redo log实现了磁盘顺序写,而且都是物理级的改动,数据量也很小。

redo log模型

redo log 默认存在2个文件,可以设置最大100个文件,这些文件组成了一个环形,redo log先0号文件从头开始写,等写到最后一个文件时,又会回到0号文件开始写

redo log使用了2个指针,用于重复写入

write pos 当前写入的位置,指针按环形移动。

checkpoint 当前要擦除的位置,checkpoint在write pos前面, 专门为write pos清理好空间,当write pos接近时,check point会向后移动擦除数据。

参数设定

show variables like '%var%'; //查询当前变量
set global var=xx;  //设置变量
innodb_log_buffer_size //设置redo log buffer大小参数,默认16M ,最大值是4096M,最小值为1M。
innodb_log_group_home_dir //设置redo log文件存储位置参数  文件名 ib_logfile0 ib_logfile1..
innodb_log_files_in_group //设置redo log文件的个数 默认2 最大100, 这些文件组成环形
innodb_log_file_size //设置单个redo log文件大小,默认值为48M。最大值为512G
innodb_flush_log_at_trx_commit //redo log 的写入策略,存在3个策略
0 事务提交不写磁盘,继续存放在redo log buffer中, 数据库宕机丢数据
1 默认值,每次提交事务都会写入磁盘, 最安全
2 提交事务,写入到操作系统文件缓存 page cache, 服务器宕机丢数据

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值