1前言

不要诧异在MySQL专题中突然插入fsync系统调用,因为马上就要和大家分享MySQL的undo log、redo log、bin log了,在分享这些文章的时候会经常说fsync这个名词,所以提前来看下。

2缓冲

传统的UNIX实现的内核中都设置有缓冲区或者页面高速缓存,大多数磁盘IO都是通过缓冲写的。

当你想将数据write进文件时,内核通常会将该数据复制到其中一个缓冲区中,如果该缓冲没被写满的话,内核就不会把它放入到输出队列中。

当这个缓冲区被写满或者内核想重用这个缓冲区时,才会将其排到输出队列中。等它到达等待队列首部时才会进行实际的IO操作。

为了方便理解,你可以回想一下你擅长使用的编程语言操作文件时,总会贴心的为你提供一个write()方法还有一个flush()方法。

这里的输出方式就是大家耳熟能详的:延迟写

这个缓冲区就是大家耳熟能详的:OS Cache

3延迟写的优点

很明显、延迟写降低了磁盘读写的次数,但同时也降低了文件的更新速度。

这样当OS Crash时由于这种延迟写的机制可能会造成文件更新内容的丢失。而为了保证磁盘上的实际文件和缓冲区中的内容保持一致,UNIX系统提供了三个系统调用:sync、fsync、fdatasync

4sync、fsync、fdatasync

#includeint fsync(int filedes);int fdatasync(int filedes);int sync();

sync系统调用:将所有修改过的缓冲区排入写队列,然后就返回了,它并不等实际的写磁盘的操作结束。所以它的返回并不能保证数据的安全性。通常会有一个update系统守护进程每隔30s调用一次sync。命令sync(1)也是调用sync函数。

fsync系统调用:需要你在入参的位置上传递给他一个fd,然后系统调用就会对这个fd指向的文件起作用。fsync会确保一直到写磁盘操作结束才会返回,所以当你的程序使用这个函数并且它成功返回时,就说明数据肯定已经安全的落盘了。所以fsync适合数据库这种程序。

fdatasync系统调用:和fsync类似但是它只会影响文件的一部分,因为除了文件中的数据之外,fsync还会同步文件的属性。

mysql fsync_用一分钟了解: fsync这个系统调用!相关推荐

  1. MySQL 当前时间30分钟以内的数据

    MySQL 当前时间30分钟以内的数据 SELECT * FROM toa_machine_restart t WHERE t.END_DATE IS NOT NULL AND t.END_DATE& ...

  2. 再次实践 MySQL chart - 每天5分钟玩转 Docker 容器技术(166)

    学习了 chart 结构和模板的知识后,现在重新实践一次 MySQL chart,相信会有更多收获. chart 安装前的准备 作为准备工作,安装之前需要先清楚 chart 的使用方法.这些信息通常记 ...

  3. mfc远程连接mysql数据库连接_MFC连接mysql数据库(十分钟搞定)

    最近要做一个大作业,需要用到数据库,sql server装了两次都失败,遂弃暗投明,用mysql,虽然我从来没有接触过,数据库么,一通百通的,5分钟就熟悉了.问题的关键是要用MFC连接mysql数据库 ...

  4. mysql 1032错误_3分钟解决MySQL 1032 主从错误

    wKioL1gapS3yFcPpAAA4eVx2Dz8496.jpg 3分钟解决MySQL 1032主从错误 Part1:写在最前 1032错误----现在生产库中好多数据,在从库误删了,生产库更新后 ...

  5. mysql时间戳与PHP时间戳,php – 当mysql时间戳gt; 20分钟时删除时间戳比较

    我想做一些并不复杂的事情,但即使我尝试过很多事情,我也无法成功-- 首先,我有一个带有一行时间戳类型的数据库mysql.我用这样的日期插入元素: $date = date('Y-m-d H:i:s', ...

  6. mysql 日期减10分钟_获取当前时间减去10分钟的话SQL语句怎么写

    获取当前时间减去10分钟的话SQL语句怎么写 Mysql日期和时间函数不求人 本文出自:http://linuxdb.yeah.net 作者: 晏子 (2001-07-05 15:00:00) 对于每 ...

  7. mysql时间加10分钟_将MySQL日期时间格式添加10分钟?

    使用DATE_ADD()将10分钟添加到日期时间格式.以下是语法-select date_add(yourColumnName ,interval 10 minute) from yourTableN ...

  8. mysql 取前几分钟和几秒,mysql 数据库取前后几秒 几分钟 几小时 几天的语句

    mysql 数据库取前后几秒 几分钟 几小时 几天的语句 发布时间:2020-09-24 12:48:06 来源:脚本之家 阅读:99 作者:mdxy-dxy 取当前时间: select curren ...

  9. Mysql,如果几分钟不用,再次操作时就会很慢

    2019独角兽企业重金招聘Python工程师标准>>> 1 起因 用的是mysql, mysql是直接使用阿里云服务器, 不是内网. 如果4分钟左右不用,再次操作时就会很慢,但只会慢 ...

最新文章

  1. 使用Epoll 能监听普通文件吗?
  2. nodejs安装jsdom模块出现MSB4025错误
  3. 为什么有TCP 的三次握手 和 四次挥手
  4. 什么样的编程语言,竟然能融资 1.6 亿?
  5. Hadoop 分布式文件系统 - HDFS
  6. Spring Boot微信点餐——实战开发DAO层
  7. windows环境下python 虚拟环境的创建和使用(virtualenvwrapper)
  8. C++STL与泛型编程(4)OOP(面向对象编程) Vs. GP(泛型编程)
  9. 如何在Java中将字节数组转换为十六进制字符串?
  10. 浏览器根对象window之caches
  11. NFT推动全球加密艺术浪潮
  12. npp++常用的匹配正则表达式
  13. 免费的QQ微信消息推送机器人
  14. CSS中media的最全用法格式总结!
  15. Strick mode 和Trace View使用
  16. 你和你的女神之间,差了一个OpenCV口红色号识别器
  17. 50本永不过时的经典计算机书籍
  18. 文献记录(part23)--Learn to model blurry motion via directional similarity and filtering
  19. 坐标北京,8大区域,上百家知名公司推荐给你
  20. 信息安全考研和就业的选择分析

热门文章

  1. 图像噪声与贝塔分布(Beta Distribution)的概率密度
  2. Phoenix: 验证二级索引和主表数据是否一致
  3. 【运动控制】直流电机的建模与位置控制和力控制
  4. 笨办法学Python 3 ex35学习笔记
  5. 【论文阅读笔记】FLAME: Taming Backdoors in Federated Learning
  6. MyBatis Plus之逻辑删除和分页插件使用
  7. OpenCV之高通滤波
  8. DSLR Video Tips: Lighting 数码单反相机视频提示:照明 Lynda课程中文字幕
  9. c++——ifndef的作用
  10. 魔力耳朵和瓜瓜龙英语怎么样,两者英语课有什么相似点和区别?