文件系统 fdatasync fsync sync 详解

news/2025/1/3 0:56:58/

一、Buffer和Cache简介

数据写入内存空间,这段空间就是缓冲区buffer,写入缓冲区

把数据从内存空间读出,这段空间就是缓存器cache,读取缓存区

1、 cache

Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器。

Cache并不是缓存文件的,而是缓存块的(块是I/O读写最小的单元);Cache一般会用在I/O请求上,如果多个进程要访问某个文件,可以把此文件读入Cache中,这样下一个进程获取CPU控制权并访问此文件直接从Cache读取,提高系统性能。

脏页: linux内核中的概念,因为硬盘的读写速度远赶不上内存的速度,系统就把读写比较频繁的数据事先放到内存中,以提高读写速度,这就叫高速缓存,linux是以页作为高速缓存的单位,当进程修改了高速缓存里的数据时,该页就被内核标记为脏页,内核将会在合适的时间把脏页的数据写到磁盘中去,以保持高速缓存中的数据和磁盘中的数据是一致的。

2、buffer

Buffer,一般是用在写入磁盘的,例如:某个进程要求多个字段被读入,当所有要求的字段被读入之前已经读入的字段会先放到buffer中。

Buffer:缓冲区,用于存储速度不同步的设备或优先级不同的设备之间传输数据;通过buffer可以减少进程间通信需要等待的时间,当存储速度快的设备与存储速度慢的设备进行通信时。

3、buffer和cache区别

buffer与cache操作的对象就不一样。

1)buffer(缓冲)是为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速度而设计的。

2)cache(缓存)是为了提高cpu和内存之间的数据交换速度而设计的,也就是平常见到的一级缓存、二级缓存、三级缓存。

二、系统调用

延迟写减少了磁盘读写次数,但是却降低了文件内容的更新速度,使得欲写到文件中的数据在一段时间内并没有写到磁盘上。

当系统发生故障时,这种延迟可能造成文件更新内容的丢失。为了保证磁盘与缓冲区的一致性,UNIX系统提供了sync、fsync和fdatasync三个函数。

1、sync

sync函数只是将所有修改过的块缓冲区排入写队列,然后就返回,它并不等待实际写磁盘操作结束。

2、fsync

fsync函数只对由文件描述符filedes指定的单一文件起作用,并且等待写磁盘操作结束,然后返回。可用于数据库这样的应用程序,这种应用程序需要确保将修改过的块立即写到磁盘上。

3、fdatasync

fdatasync函数类似于fsync,但它只影响文件的数据部分。而除数据外,fsync还会同步更新文件的属性。对于提供事务支持的数据库,在事务提交时,都要确保事务日志(包含该事务所有的修改操作以及一个提交记录)完全写到硬盘上,才认定事务提交成功并返回给应用层。

 


http://www.ppmy.cn/news/64346.html

相关文章

InnoDB和MySAM有什么区别?

首先,MySAM和InnoDB都是mysql里面的两个存储引擎,mysql5.5版本之前的存储引擎默认是MySAM,mysql5.5版本以后的存储引擎默认是InnoDB,它们底层数据结构都是基于B树的。 Mylsam存储引擎: Mylsam索引是非聚簇索引,Mylsa…

企业如何利用网络趋势做好线上营销?

随着互联网的不断发展,线上营销越来越成为企业营销的重要组成部分。如何利用网络趋势做好线上营销,已经成为各大企业关注的焦点。本文将为大家介绍如何利用网络趋势做好线上营销的方法和技巧。 一、了解网络趋势 了解网络趋势是做好线上营销的关键。网络…

Cocos Creator 3.7.3 正式上线,渲染管线和算法持续更新

Cocos Creator 3.7.3 正式发布。该版本对近日用户反馈的一系列关键性问题进行了集中修复,也对一部分性能进行了优化,提升了用户体验,建议所有 v3.x 用户升级。 Engine Features Render Graph 自定义渲染管线支持 GLES 后端Deprecate addRast…

亿级大表毫秒关联,荔枝微课基于Apache Doris 统一实时数仓建设实践

本文导读: Apache Doris 助力荔枝微课构建了规范的、计算统一的实时数仓平台,目前 Apache Doris 已经支撑了荔枝微课内部 90% 以上的业务场景,整体可达到毫秒级的查询响应,数据时效性完成 T1 到分钟级的提升,开发效率更…

递归递推练习题答案

1.用递归的方法123…N的值(in:5,out:15) def dg(n):if n1:return 1else:return dg(n-1)n nint(input()) print(dg(n))2.输出斐波那契数列的第N项,0,1,1,2,3,5,8&#xf…

人工智能浪潮中,AI如何为企业降本增效?

人工智能浪潮下,企业应如何抓住机遇,用AI降本增效?如何选择适合自身产业的人工智能服务?如果你想了解更多,本文或许能给你提供一点思路。 一、企业如何利用AI降本增效 在人工智能浪潮下,已有多款AI产品问世…

HQChart实战教程61-自定义十字星K线颜色

HQChart实战教程61-自定义平盘K线颜色 十字星步骤1. 注册事件2. 监听回调函数阐述说明HQChart插件源码地址完整的demo源码十字星 十字星是一种K线基本型态。十字星,是一种只有上下影线,没有实体的K线图。开盘价即是收盘价,表示在交易中,股价出现高于或低于开盘价成交,但收…

07 - 3系统容量规划

阿里系业务容量规划 Tair集群部署与水位调配 阿里系容量精调之单机压测场景 传统模拟请求 流量复制 流量转发 网关权重 线上测试注意点 阿里系混合部署技术 资源分时复用:提高资源利用率sigama框架做在线资源池调度,伏羲做离线资源池调度;…