Mysql错误日志:
Version: '5.1.34-percona-highperf-log' socket: '/home/mysql/mysql.sock' port: 3306 Source distribution
140324 5:00:02 InnoDB: Failed to set O_DIRECT on file /tmp/#sql593e_191_0.ibd: CREATE: Invalid argument, continuing anyway
140324 5:00:02 InnoDB: O_DIRECT is known to result in 'Invalid argument' on Linux on tmpfs, see MySQL Bug#26662
140324 5:00:02 InnoDB: Failed to set O_DIRECT on file /tmp/#sql593e_191_0.ibd: OPEN: Invalid argument, continuing anyway
140324 5:00:02 InnoDB: O_DIRECT is known to result in 'Invalid argument' on Linux on tmpfs, see MySQL Bug#26662
140324 5:00:02 InnoDB: Failed to set O_DIRECT on file /tmp/#sql593e_192_0.ibd: CREATE: Invalid argument, continuing anyway
140324 5:00:02 InnoDB: O_DIRECT is known to result in 'Invalid argument' on Linux on tmpfs, see MySQL Bug#26662
140324 5:00:02 InnoDB: Failed to set O_DIRECT on file /tmp/#sql593e_192_0.ibd: OPEN: Invalid argument, continuing anyway
140324 5:00:02 InnoDB: O_DIRECT is known to result in 'Invalid argument' on Linux on tmpfs, see MySQL Bug#26662
innodb_flush_method 这个参数控制着innodb数据文件及redo log的打开、刷写模式。对于这个参数,文档上是这样描述的:
从MySQL 5.6的版本开始,也就是InnoDB 1.2版本中(PS:MariaDB 10.x版本将集成InnoDB 1.2版本),对于参数innodb_flush_method提供了一个新的设置值O_DIRECT_NO_FSYNC。
有四个值:fdatasync,O_DSYNC,O_DIRECT,O_DIRECT_NO_FSYNC
首先文件的写操作包括三步:open,write,flush
至此总结一下三者写数据方式:
优点: