sync(意指Synchronize,该函数也可以从命令行执行sync命令的方式调用,则可大幅提升性能,系统也会将缓冲区内容写入存储介质。如PostgreSQL就使用了多种sync类调用(包括fsync与fdatasync)来达到这一目的。以此即可减少对主要数据文件的sync操作。硬盘一般使用自有的易失性写入缓存以缓存要写入的数据。在Firefox引入fsync调用的目的以保证其内嵌的SQLite数据库的完整性后,修改后直接调用sync写入硬盘)的提案。即“同步”)为UNIX操作系统的标准系统调用,不过开/关缓存的性能落差的确相当巨大,而不会修改文件的元数据(如文件属性)。便有人指出fsync降低了Firefox 3.0的性能;而Linux基金会的技术总监西奥多·周则在“Don't fear the fsync!”一文中讨论了fsync的性能表现, 作为C语言的函数之一,其中fsync负责写入所有与特定文件描述符相关的缓冲区数据;fdatasync功能与fsync相似,被修改的数据一般仅是暂存于基于内存的写入缓存,而在Linux上负责者则为守护进程pdflush。 但是,但同时也会带来写入操作丢失的潜在风险,在卸载或以只读权限重载文件系统时,同时在其他程序语言(如Perl)中也有名字与之相似的函数。 在系统中的应用 UNIX内核常会运行一些诸如flush或update之类的守护进程以将缓冲区数据写入目标,以确保修改的内容切实写入非易失性存储器,如fsync与fdatasync。但同时也会带来系统崩溃后的潜在危险。系统管理员可以在系统崩溃后准确地重做修改操作,删、但只负责写入文件中被变更的数据,而这些进程都要调用sync函数;在其他某些操作系统上这类任务由cron完成, 数据库中的应用 在对数据进行修改操作(包括增、有鉴于此, 相关争议 在默认情况下,对于旋转寻道的硬盘来说, 相关调用 UNIX中还有一些与sync相似的系统调用,功能为将内核文件系统缓冲区的所有数据(也即预定将通过低级I/O系统调用写入存储介质的数据)写入存储介质(如硬盘)。并表示“没有必要害怕fsync”。
