MySQLInnodb_flush_method
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQLInnodb_flush_method,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2781字,纯文字阅读大概需要4分钟。
内容图文
![MySQLInnodb_flush_method](/upload/InfoBanner/zyjiaocheng/549/fc49b5e78bcf446c8633636e125a299e.jpg)
innodb_flush_log_at_trx_commit 决定了事务日志何时write,flushinnodb_flush_method确定了日志及数据文件如何write、flush。ld
innodb_flush_log_at_trx_commit 决定了事务日志何时write,flush
innodb_flush_method确定了日志及数据文件如何write、flush。“show variables”显示该变量为空,那说明被设置了默认值(fdatasync)
下面我们先从Linux IO上理解一下文件是如何打开、写入、刷写到磁盘上的。
一般的文件I/O操作的三个过程open、write、fdatasync,分别是打开文件、写文件、flush操作(将文件缓存刷到磁盘上)
open 阶段:
系统调用Open(),使用 O_WRONLY| O_APPEND|O_SYNC 打开文件:
O_WRONLY表示我们以“写”的方式打开文件。
O_APPDENT以追加的方式写文件。
O_DSYNC 当向文件写入数据的时候,只有当数据写到了磁盘时,写入操作才会完成(write 才会返回成功),
与之相对应的是:
O_SYNC: 这个比O_DSYNC 更严格,把数据写入到文件时,还要把数据的一些元信息写入到磁盘比如文件长度等。
O_RSYNC 表示文件读取时,该文件的缓存必须已经flush到磁盘上。
O_DIRECT打开文件,则读/写操作都会跳过OS cache,,直接在device(disk)上读/写。(这样会降低文件的顺序读写的效率)
write阶段: 依赖与open阶段。
flush阶段:将数据刷写到磁盘上。
Fdatasync() 来确保数据文件flush到了磁盘上。
与之相对应的是:
fsync() fdatasync()两者区别等同于 O_sync 和 O_Dsync
sync()函数,将文件写入os cache 就认为写入成功(所以这个很不可靠,但性能确实提高啦)
对于linux平台的 innodb_flush_method() 设置为 Fdatasync 默认,O_sync, O_Direct
对于fdatasync:
Innodb 使用fsync()函数来刷写数据和日志。fysnc()相比fdatasync()函数需要更多的IO(元数据信息),fdatasync()在某些情况下造成Innodb崩溃。
使用fsync()的缺点是 os会缓存部分数据。因为Innodb 能够比os更能智能的管理自己的缓存区(Innodb buffer pool)。这样会造成双缓冲的浪费。(双缓冲部分的优点:有些文件系统会累计写入并执行他们,可能很有效率的排序,或者并行的写入到设备中。可以做预读取),具体情况可以具体测试一番。如果启用Innodb_file_per_table时导致每个文件都被单独使用fsync()函数,,当写入到多个表的时候不能合并到单个IO操作中。
对于O_DIRECT:
数据文件使用该标记,这个选项不会影响日志文件,对linux、freeBSD、Solaris 支持。,这个时候os不会缓存数据,完全禁止了os缓存并且使所有的读写动作直接到存储设备(避免了双缓冲),使用fsync()把文件刷写到磁盘上(该设置不能禁止RAID卡上的提前读取功能,只是禁止os的提前读取功能),对于RAID卡的缓存还是建议打开的。对于Innodb_file_per_table影响不大(热身时间会加长,满足buffer pool)
对于O_DSYNC:
这个对日志文件调用open()使用了O_SYNC标志,所有的写入是同步的,数据只有写入磁盘才算有效。它不会影响数据文件。
它不会禁止os 的缓存.
具体关系:
openlog flush log opendata file flush datafile
Fdatasync fsync() fsync()
O_DSYNC O_SYNC fsync()
O_DIRECT fsync() O_DIRECT fsync()
内容总结
以上是互联网集市为您收集整理的MySQLInnodb_flush_method全部内容,希望文章能够帮你解决MySQLInnodb_flush_method所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。