innodb_flush_method这个参数控制着innodb数据文件及redo log的打开、刷写模式,对于这个参数,文档上是这样描述的:

有三个值:fdatasync(默认),O_DSYNC,O_DIRECT

默认是fdatasync,调用fsync()去刷数据文件与redo log的buffer

为O_DSYNC时,innodb会使用O_SYNC方式打开和刷写redo log,使用fsync()刷写数据文件

为O_DIRECT时,innodb使用O_DIRECT打开数据文件,使用fsync()刷写数据文件跟redo log

首先文件的写操作包括三步:open,write,flush

上面最常提到的fsync(int fd)函数,该函数作用是flush时将与fd文件描述符所指文件有关的buffer刷写到磁盘,并且flush完元数据信息(比如修改日期、创建日期等)才算flush成功。

使用O_SYNC方式打开redo文件表示当write日志时,数据都write到磁盘,并且元数据也需要更新,才返回成功

O_DIRECT则表示我们的write操作是从mysql innodb buffer里直接向磁盘上写

至此我再总结一下三者写数据方式:

fdatasync模式:写数据时,write这一步并不需要真正写到磁盘才算完成(可能写入到操作系统buffer中就会返回完成),真正完成是flush操作,buffer交给操作系统去flush,并且文件的元数据信息也都需要更新到磁盘。

O_DSYNC模式:写日志操作是在write这步完成,而数据文件的写入是在flush这步通过fsync完成

O_DIRECT模式:数据文件的写入操作是直接从mysql innodb buffer到磁盘的,并不用通过操作系统的缓冲,而真正的完成也是在flush这步,日志还是要经过OS缓冲

innodb_flush_method理解【转】相关推荐

  1. innodb_flush_method 的理解

    转载自: https://www.cndba.cn/bensoncd/article/2093 陶方在<innodb_flush_method带来的性能影响>中从实验角度比较了fdatas ...

  2. mysql innodb flush method_对innodb_flush_method的一点解释

    官方文档描述如下: By default, InnoDB uses the fsync()system call to flush both the data and log files. If in ...

  3. MySQL Innodb_flush_method

    本文出自: http://weipengfei.blog.51cto.com/1511707/985968  innodb_flush_log_at_trx_commit 决定了事务日志何时write ...

  4. 通用解题法——回溯算法(理解+练习)

    积累算法经验,积累解题方法--回溯算法,你必须要掌握的解题方法! 什么是回溯算法呢? 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就&quo ...

  5. stream流对象的理解及使用

    我的理解:用stream流式处理数据,将数据用一个一个方法去 . (点,即调用) 得到新的数据结果,可以一步达成. 有多种方式生成 Stream Source: 从 Collection 和数组 Co ...

  6. Linux shell 学习笔记(11)— 理解输入和输出(标准输入、输出、错误以及临时重定向和永久重定向)

    1. 理解输入和输出 1.1 标准文件描述符 Linux 系统将每个对象当作文件处理.这包括输入和输出进程.Linux 用文件描述符(file descriptor)来标识每个文件对象.文件描述符是一 ...

  7. java局部变量全局变量,实例变量的理解

    java局部变量全局变量,实例变量的理解 局部变量 可以理解为写在方法中的变量. public class Variable {//类变量static String name = "小明&q ...

  8. 智能文档理解:通用文档预训练模型

    预训练模型到底是什么,它是如何被应用在产品里,未来又有哪些机会和挑战? 预训练模型把迁移学习很好地用起来了,让我们感到眼前一亮.这和小孩子读书一样,一开始语文.数学.化学都学,读书.网上游戏等,在脑子 ...

  9. 熵,交叉熵,散度理解较为清晰

    20210511 https://blog.csdn.net/qq_35455503/article/details/105714287 交叉熵和散度 自己给自己编码肯定是最小的 其他的编码都会比这个 ...

最新文章

  1. c# BackgroundWorker组件介绍(属性、方法、事件)
  2. Android ramdisk.img system.img userdata.img 介绍与使用
  3. IOS之提示Interface type cannot be statically allocated
  4. python保存html图_如何保存“完整网页”不仅仅是使用Python的基本HTML
  5. jQuery Mobile 移动开发中的日期插件Mobiscroll使用说明
  6. java 构造函数嵌套_java – spring – 构造函数注入和覆盖嵌套bean的父定义
  7. C# ManualResetEvent 与 AutoResetEvent 区别
  8. 51单片机-STC89C52系列学习第一篇之IO口学习
  9. 升级安卓6.0.1后wifi出现的已连接 但无法访问互联网的问题
  10. 从“七宗罪”角度,看互联网产品与人性的深沉纠缠
  11. 网易云音乐爬虫 数据可视化分析
  12. c++——ignore()函数
  13. 飞天遁地、来去自如?Oracle数据库秉承技术当先,用户也来说说看
  14. 【第八章】 C语言之牛客网力扣刷题笔记 【点进来保证让知识充实你一整天】
  15. php 编码安全,PHP编码安全之二: 代码执行漏洞
  16. 计算机科学与技术论文提纲,计算机科学与技术专业论文提纲格式模板 计算机科学与技术专业论文提纲怎样写...
  17. spring boot 中使用 POP3协议读取并解析邮件
  18. MMC型APF,MMC型statcom,MMC型储能系统,MMC-HVDC
  19. ENVI: 如何创建GLT文件并基于GLT对图像进行几何校正?
  20. 程序员掉发算工伤?程序员的你应该如何防止Tu头?

热门文章

  1. java对象深克隆_JAVA中对象的克隆及深拷贝和浅拷贝
  2. 修改html自带组件样式,能否直接在组件html上为组件根元素设置自定义class
  3. mysql heartbeat 慢_Mysql 慢日志优化分析方法
  4. 设置 Visual Studio 文件版权信息 - C语言零基础入门教程
  5. BugkuCTF-PWN题canary超详细讲解
  6. fi sap 凭证冲销 稅_SAP 成本收集器与重复制造配置手册
  7. mysql表里插不进去数据_Oracle数据中表值插不进去问题(转)
  8. c语言tmplink,为了便于阅读,偿试把BLHeli的汇编源程序改成C语言格式
  9. python绘制折线图显示数据_漂亮图表也可用python信手拈来!一文教你学会用Python绘制堆积折线图...
  10. 最大素数c语言,for语句计算输出10000以内最大素数怎么搞最简单??各位大神们...