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

mysql fsync_用一分钟了解: fsync这个系统调用!1前言不要诧异在MySQL专题中突然插入fsync系统调用,因为马上就要和大家分享MySQL的undolog、redolog、binlog了,在分享这些文章的时候会经常说fsync这个名词,所以提前来看下。2缓冲传统的UNIX实现的内核中都设置有缓冲区或者页面高速缓存,大多数磁盘IO都是通过缓冲写的。当你想将数据write进文件时,内核通常会将该数据复制到其中一个缓冲区中,如果该缓冲没被写满…

大家好,又见面了,我是你们的朋友全栈君。

1前言

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

2缓冲

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

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

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

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

f2b5ca5b9ef657d0d40df1dca89c989c.png

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

这个缓冲区就是大家耳熟能详的: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还会同步文件的属性。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138300.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MySQL数据库笔记(三)

    MySQL数据库笔记(三)

    2021年7月10日
    75
  • ISDN实验基本配置

    ISDN实验基本配置

    2021年7月28日
    62
  • flowable 集成mongodb

    flowable 集成mongodb学无止境,活到老学到老,每天都问自己进步了吗?1.背景由于公司每天有至少1500个表单发起,处理待办任务至少7000个,累计历史任务数据已经达到200多w条,时间一长,通过数据库查询已办的任何和我发起的流程巨慢所以我们考虑到这些数据能不能放入ES或者是mongodb中流程中心1.0版本集成的是ES,速度确实非常快,提升查询性能近万倍,但是由于ES是一个全文检索的系统,对我们这些业务数据来说…

    2022年5月18日
    103
  • JSONObject与JSONArray的使用

    JSONObject与JSONArray的使用

    2021年12月9日
    68
  • 北京2018积分落户名单[通俗易懂]

    北京2018积分落户名单[通俗易懂]北京2018积分落户名单已经公示出来了,地址在北京人力和社会保障局官网,共有6019人获得,恭喜他们,最低分为90.75分。Update:2019年的也出来了,详情请见https://blog.csdn.net/minstyrain/article/details/102642906.网站每页只能显示100页的内容,浏览起来很不方便,这里提供完整的excel表格形式的数据,详见百度网盘(…

    2022年10月6日
    3
  • Lamp架构_lamp服务器

    Lamp架构_lamp服务器LAMP架构搭建1.LAMP架构简介所谓lamp,其实就是由Linux+Apache+Mysql/MariaDB+Php/Perl/Python的一组动态网站或者服务器的开源软件,除Linux外其它各部件本身都是各自独立的程序,但是因为经常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。LAMP指的是Linux(操作系统)、Apache(HTTP服务器)、MySQL(也指MariaDB,数据库软件)和PHP(有时也是指Perl或Python)的第一个字母,一般用来建

    2022年10月17日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号