【发布时间】:2015-01-23 14:37:05
【问题描述】:
根据关于 O_DSYNC (http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html#sysvar_innodb_flush_method) 的 mysql 文档:
“O_DSYNC:InnoDB 使用 O_SYNC 打开和刷新日志文件,使用 fsync() 刷新数据文件。InnoDB 不直接使用 O_DSYNC,因为它在多种 Unix 上都存在问题。”
但是调用 fsync() 会强制文件进入同步 I/O 文件完整性完成状态(数据和元数据),而 fdatasync() 仅强制文件进入同步 I/O 数据完整性完成状态。 (无元数据)
所以根据这个mysql应该使用fdatasync()而不是fsync()来模拟O_DSYNC(这会导致写入按照fdatasync()等同步I/O数据完整性完成的要求执行)。旗帜。我在这里缺少什么?
【问题讨论】:
标签: mysql linux filesystems posix