我知道 SQLite 在具有多个客户端的共享文件系统上并不理想。但是,文档暗示多个阅读器应该没问题。
我的 SQLite 数据库驻留在 Lustre 卷上,并且数据库是“分区的”——尽管它是一个VIEW
,而不是显式表,使用 ID 上的模运算符来定义分区——这样多个读取器是互斥的。这可行,但在(传闻中)大约 40% 的时间里,我在读取数据库时收到“磁盘 I/O 错误”(使用 Python 3.7.4 和 SQLite 3.30.0,使用 Python stdlib sqlite3)。
假设标准 Unix VFS 的假设不适用于 Lustre 文件系统(因为它们不适用于其他网络文件系统)是否安全?如果是这样,为什么它对读者很重要?
假设我只需要使用 Lustre 上的 SQLite,我能做些什么来缓解这种情况吗?例如,将数据物理分离到多个 SQLite 分片中,这些分片永远只有一个客户端,并且可能会将ATTACH
它们发送到中央源?