缺乏文件锁实现-tdc-gp30 external circuit for gas meters application note

时间:2024-06-29 08:14:40
【文件属性】:

文件名称:缺乏文件锁实现-tdc-gp30 external circuit for gas meters application note

文件大小:1.95MB

文件格式:PDF

更新时间:2024-06-29 08:14:40

SQlite 学习教程

9.0 会导致完蛋的事情 SQLite 的原子提交机制已经被证明是健壮的。但它也可能被一些不完整的操作系统实现所陷害。本节描述一些会 在 掉电或系统崩溃下会导致 SQLite 数据损坏的情形 9.1 缺乏文件锁实现 SQLite 通过文件系统的锁来实现在同一时刻只有一个进程及一个数据库联接能够修改数据库。文件锁机制由 VFS 层实现,不同的操作系统具有不同的实现方式。SQLite 依赖于这种实现的正确性。如果在某种情况下,二个或更 多 进程能够在同一时间写同一个数据库文件,这将会没有什么好果子吃的。 我们已经接收到报告说 windows 的网络文件系统及 NFS 的锁存在一些微妙的缺陷。我们不能验证这些报告。但 是 因为网络文件系统本身实现锁很困难,所以我们没有理由怀疑这些报告。首先,既然性能不足,建议你不要在网络 文件系统中使用 SQLite。但是如果你不得不使用一个网络文件来保存 SQLite 的数据文件,那们考虑采用其他的锁 机 制来防止本身的文件锁机制出错时发生多个进程同时写一个数据文件的现象。 苹果 MacOSX 预装的 SQLite 版本已经扩展拥有一种可供选择的锁策略可以工作在苹果支持的所有网络文件系统 上。 这些苹果使用的扩展在多个进程在同时访问数据库文件时工作得很好。不幸的是,这些锁机制并不互相排斥,如果 一个进程使用 AFP 锁去访问文件,而另一个进程(或许是另一台机器)使用 dot-file 锁去访问这个文件,那么这 二 个进程可能发生冲突,因为 AFP 锁并不排斥 dot-file 锁,反之亦然。


网友评论