ITPub博客

首页 > 数据库 > MySQL > 关于mysql的redo日志参数innodb_log_write_ahead_size中read-on-write的理解

关于mysql的redo日志参数innodb_log_write_ahead_size中read-on-write的理解

原创 MySQL 作者:yangjustins 时间:2016-11-02 00:00:43 0 删除 编辑

先来说说innodb_log_write_ahead_size, 这个参数是在5.7.4引入的.
#innodb_log_write_ahead_size 默认为8192.
#引入write-ahead,将当前写入redo文件的偏移量整除innodb_log_write_ahead_size该值,不能整除时则补0,多写一部分数据,这样一来,写入的数据是与磁盘的block size保持一致了.这样就可以直接写入磁盘.就省去了先读到系统内存,再修改大小,再写入的过程....

在引入innodb_log_write_ahead_size之前,redo的刷盘是采用read-on-write模式的,关于read-on-write的理解如下:
首先看官方说法:
Read-on-write occurs when redo log blocks are not entirely cached to the operating system or file system due to a mismatch between write-ahead block size for redo logs and operating system or file system cache block size.

我大概理解了下read-on-write:   innodb是以512字节一个block写入redo文件的,一般的linux的文件系统都是4k大小的..如果需要写入的日志文件块不在操作系统的cache时,就需要将对应的4k大小的block读入系统内存,修改512字节,然后在写入磁盘...  看淘宝的解析.是这么个意思...
引入write-ahead,将当前写入redo文件的偏移量整除innodb_log_write_ahead_size该值,不能整除时则补0,多写一部分数据,这样一来,写入的数据是与磁盘的block size保持一致了.这样就可以直接写入磁盘.就省去了先读到系统内存,再修改大小,再写入的过程....

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/20892230/viewspace-2127476/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-08-20

  • 博文量
    28
  • 访问量
    81399