在NFS文件系统上锁定sqlite文件可能吗?

假设有两个python脚本想要将数据写入存储在使用sqlite3模块的SQLite文件中的同一个表中。 SQLite文件存储在NFS文件系统中。 在SQLite-FAQ中,我读到:

SQLite使用读写器锁来控制对数据库的访问。 [...]但要小心:如果数据库文件保存在NFS文件系统上,则此锁定机制可能无法正常工作。 这是因为在许多NFS实现中fcntl()文件锁定被破坏。 如果多个进程可能试图同时访问文件,则应避免将NFS数据库文件放在NFS上。

这是否意味着它根本不可能,或者有什么方法可以确保一个过程等到另一个过程完成?

INSERTs并不复杂。 一些:

INSERT_STATEMENT = "INSERT INTO some_table (row, col, val) VALUES (?, ?, ?)"
connection.executemany(INSERT_STATEMENT, triples)

插入的集合是不相交的。

还有一个问题:当两个进程试图写入同一个表或者他们试图写入同一个数据库(这是一个文件)时,NFS问题是否会发生? 是否让每个进程都在同一个数据库(文件)中创建自己的表并写入该表?


不要将SQLite与NFS一起使用。 它是如此简单。 NFS语义与普通文件系统不同,并且更松散。 你最终会得到腐败。 每隔一段时间,SQLite用户邮件列表上的人员都会发布他们的“解决方法”。 尽管他们看起来很短,但他们从不工作。

链接地址: http://www.djcxy.com/p/19757.html

上一篇: Locking sqlite file on NFS filesystem possible?

下一篇: How perform SQLite query with a data reader without locking database?