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缓冲

原文地址:

http://www.mtop.cc/node/100

MySQL innodb_flush_method 【转载】相关推荐

  1. mysql主从复制--转载

    MySQL 5.7.18的安装与主从复制   CentOS6.7安装mysql5.7.18 1. 解压到/usr/local目录 # tar -zxvf mysql-5.7.18-linux-glib ...

  2. MySQL触发器(转载)

    触发器(trigger)是数据库中的一个很重要的.很实用的基于事件的处理器,在处理一些业务需求的时候,使用触发器会很方便.似乎在<高性能MySQL>中,对触发器作了一定的描述,也提到使用中 ...

  3. 在Ubuntu中安装MySQL (转载)

    MySQL在Linux Ubuntu中安装 本文使用的Linux是Ubuntu 12.04.2 LTS 64bit的系统,安装MySQL数据库软件包可以通过apt-get实现. 在Linux Ubun ...

  4. MySQL Innodb_flush_method

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

  5. .net连接mysql数据_.net连接MYSQL数据库 转载

    方法一: 使用MySQL推出的MySQL Connector/Net组件, 该组件是MySQL为ADO.NET访问MySQL数据库设计的.NET专用访问组件.完成该组件后,需要在项目中引用这个组件,也 ...

  6. 如何在docker中运行MySQL实例(转载)

    如何在docker中运行MySQL实例 转自:https://blog.csdn.net/siying8419/article/details/79670246 通常初学者学习docker时,不太清楚 ...

  7. ubyntu 链接mysql_ubuntu下mysql连接(转载)

    ubuntu下mysql默认只能从本地连接的解决方法 sudo gedit /etc/mysql/my.cnf 修改一个字段 bind-address = 127.0.0.1 -> bind-a ...

  8. [转载]linux 出现: Starting MySQL.Manager of pid-file quit without updating file.[FAILED] 已解决...

    声明:此文章转载自: http://blog.csdn.net/shuicaohui5/archive/2009/12/16/5015218.aspx 安装mysql 版本: mysql-5.1.41 ...

  9. linux备份mysql怎样操作,Linux下自动备份MySQL数据库详细操作步骤(转载)

    环境说明 操作系统:CentOS IP:192.168.150.214 Oracle数据库版本:Oracle11gR2 用户:root 密码:123456 端口:3306 数据库:ts_0.ts_1. ...

最新文章

  1. python安装pip-Python2.7.5安装pip9.0.1
  2. Alibaba Nacos:搭建Nacos平台
  3. 2018年秋计算机基础在线作业,《计算机应用基础》2017年的秋学期在线作业三.doc...
  4. 基础算法---二分查找
  5. 计算机网络原理应用题/计算题
  6. 显示分类对应的文章数目,为空的设置为0,按文章数目排序
  7. Python3.4下使用sqlalchemy
  8. 泛型的意义与通配符理解
  9. catia导出bom清单_CATIA VBA 二次开发工具 | 一键导出Bom信息到Excel
  10. 【原】使用IPV6,nbsp;10M/s高速BT互传…
  11. 新手怎么用word制作表格
  12. 个人Linux学习笔记操作大全
  13. 世界自然基金会推出区块链工具以跟踪食品供应链
  14. 一.学习前的准备-java程序员必备知识
  15. 11-散列1 电话聊天狂人 (25分)
  16. Python:pandas.DataFrame.describe(df.describe(include='all'))
  17. buck-boost电路计算
  18. 【系统架构设计师】第一章:操作系统(1.2.2) 信号量与pv操作
  19. 算法成长之路------CF22A Second Order Statistics
  20. ToB 服务的交付能力优化

热门文章

  1. 域控服务器状态检查和标准备份
  2. 「镁客早报」特朗普复活美国太空指挥部;ATT的5G网络在美国12个城市上线
  3. Oracle RMAN备份深入解析--联机备份
  4. sql server 2012序列号
  5. ORA-01855: AM/A.M. or PM/P.M. required错误解决
  6. 【Amazon 必考】Amazon Leadership Principles 亚马逊领导力准则
  7. 小型音乐播放器插件APlayer.js的简单使用例子
  8. Servlet监听器Listener
  9. 逃离湾区,下一站是哪里?西雅图 PK 奥斯汀
  10. 【思维导图】redis