如何理解mysql的重做日志参数innodb_log_write_ahead_size中的read-on-write

分类:编程技术 时间:2024-02-20 16:02 浏览:0 评论:0
0
如何理解mysql的重做日志参数innodb_log_write_ahead_size中的read-on-write?很多新手对此并不是很清楚。为了帮助大家解决这个问题,下面小编就为大家详细讲解一下。有这方面需求的人可以过来学习。希望你有所收获。


先说一下innodb_log_write_ahead_size。该参数是5.7.4中引入的。
#innodb_log_write_ahead_size默认为8192。
#引入write-ahead,当前写入重做文件的偏移量可以被innodb_log_write_ahead_size的值整除。如果不可整除,则加0并写入更多数据。这样写入的数据就和磁盘的块大小一致了。这样就可以直接写入磁盘了。这样就省去了先读取系统内存,然后修改大小,再写入的过程......

在引入innodb_log_write_ahead_size之前,redo磁盘刷新采用read-on-write模式。理解read-on-write的ding如下:
首先看官方的说法:
当重做日志块由于某种原因而没有完全缓存到操作系统或文件系统时,就会发生Read-on-write。重做日志的预写块大小与操作系统或文件系统缓存块大小不匹配。

我大致了解写时读取:innodb 基于 512 字节块被写入重做文件。一般来说,Linux 文件系统的大小为 4k。如果需要写入的日志文件块不在操作系统的缓存中,则需要将对应的4k块读入系统内存并进行修改。 512字节,然后写入磁盘……看淘宝的分析。就是这个意思...
引入write-ahead,除以当前写入重做文件的偏移量。 innodb_log_write_ahead_size的值不能整除。当添加 0 时,将写入额外的部分数据。这样写入的数据就和磁盘上的块一致了大小保持一致。这样就可以直接写入磁盘了。这样就省去了先读取系统内存,然后修改大小,再写入的过程......

阅读以上内容对您有帮助吗?如果您想了解更多相关知识或阅读更多相关文章,请关注行业资讯频道。感谢您的支持。

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何理解mysql的重做日志参数innodb_log_write_ahead_size中的read-on-write

用户评论