我正在开发一个ACID数据库软件产品,并对WinOS上的文件耐久性有一些疑问。
CreateFile有两个属性, FILE_FLAG_WRITE_THROUGH和FILE_FLAG_NO_BUFFERING – 我是否需要这两个来实现文件的持久性(即覆盖所有types的磁盘或操作系统文件caching)? 我问,因为他们似乎做同样的事情,并设置FILE_FLAG_NO_BUFFERING导致WriteFile抛出一个ERROR_INVALID_ParaMETER错误。
在随机访问networking服务器上的文件时依次访问文件时的性能
如何在bash文件夹中的每个文件的开头添加一个string?
FILE_FLAG_NO_BUFFERING在al中没有指定缓存。 没有读或写缓存所有数据直接进入和从您的应用程序到磁盘。 如果你读了如此大的块,那么缓存是无用的,或者你自己做了缓存,这是非常有用的。 注意当使用此标志时,WhozCraig对正确对齐数据的评论。
FILE_FLAG_WRITE_THROUGH只意味着在函数返回之前写入操作应直接写入磁盘。 这足以实现ACID,同时它仍然允许操作系统从文件中缓存数据。
使用Flushfilebuffers()可以为实现ACID提供更高效的方法,因为您可以对文件进行多次写入,然后一次刷新它们。 在一次刷新中合并写入非常重要,因为非高速缓存写入将限制您的硬盘的主轴速度。 对于7200转/分钟的磁盘,每秒最多120次非缓存写入或刷新。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。