zoukankan      html  css  js  c++  java
  • fsync与数据库日志刷新

    在当将数据写到文件上时,通常该数据先由内核复制到缓存中,如果该缓存尚未写满,则并不将其排入输出队列,而是等待其写满或者当内核需要重用该缓存以便存放其他磁盘块数据时,再将该缓存排入输出队列,然后待其到达队首时,才进行实际的I / O操作。这种输出方式被称之为延迟写。延迟写减少了磁盘读写次数,但是却降低了文件内容的更新速度,使得欲写到文件中的数据在一段时间内并没有写到磁盘上。当系统发生故障时,这种延迟可能造成文件更新内容的丢失。为了保证磁盘上实际文件系统与缓存中内容的一致性,操作系统提供了s y n c和f s y n c两个系统调用函数。

    void sync(void) ;

    int fsync(int filedes) ;

    返回:若成功则为0,若出错则为-1

    sync只是将所有修改过的块的缓存排入写队列,然后就返回,它并不等待实际I / O操作结束。

    fsync只引用单个文件(由文件描述符filedesc指定),它等待I/O结束,然后返回。fsync可用于数据库这样的应用程序,它确保修改过的块立即写到磁盘上

  • 相关阅读:
    Task 5.1 电梯调度程序需求调研报告
    Task 4 求数组的连续子数组的最大和(团队合作)
    class 3 求数组中的最大值(单元测试)
    《你的灯亮着吗》读书笔记3
    优惠购书
    校友聊NABCD
    环状二维数组(改进版)
    环状二维数组
    环状一维数组
    二维数组最大值
  • 原文地址:https://www.cnblogs.com/wangyubo/p/4445032.html
Copyright © 2011-2022 走看看