gpt4 book ai didi

java - 什么是 Kyoto Cabinet Database 的 "physical synchronization"?

转载 作者:搜寻专家 更新时间:2023-10-30 21:30:45 24 4
gpt4 key购买 nike

函数begin_transaction接受一个 boolean 参数,指示应该执行哪种类型的同步;为真时为物理,为假时为逻辑。

“物理”同步或硬同步是什么意思?

最佳答案

我不太确定 Java 等价物,但是:

  • 逻辑同步意味着任何数据库更改都从 DBMS 缓存写入文件系统。在 C 中,您可以使用 fprintf/fwrite/write/etc 来做到这一点。

  • 物理同步指的是上述内容,加上要求操作系统将所述更改推送到永久存储(硬盘驱动器、SSD 等)而不是将它们保存在文件系统缓存中的附加操作。这样可以确保在发生任何意外情况时不会丢失这些更改。在 Linux/POSIX 系统上,这意味着调用 fsync() 或 fdatasync() 系统调用。

编辑:

显然,Java 中的 fsync() 等效于 FileDescriptor.sync():

http://download.oracle.com/javase/1.4.2/docs/api/java/io/FileDescriptor.html#

重点是要为数据库实现真正的 ACID 语义,所有事务都应同步到永久存储介质。否则,您的应用程序必须能够处理静默失败的事务 - DBMS 会将事务推送到文件系统并成功返回,但是如果发生更改,更改可能会丢失。系统断电。

物理同步的问题在于它会对性能产生重大影响。硬盘驱动器每秒可以处理有限数量的事务(SSD 在这方面要快很多),这就是为什么要提高数据库性能的第一件事就是将插入捆绑到较大的事务中。 p>

关于java - 什么是 Kyoto Cabinet Database 的 "physical synchronization"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4299896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com