我的 Xamarin Android 应用程序中有 SQLITE 数据库,我需要能够从不同的线程和/或进程同时读取和写入它。所以我现在尝试在 WAL 模式下使用它。它大部分工作正常。我之前遇到的 SQLITE_BUSY 错误不再发生。
问题是我还希望能够将这个数据库从设备中取出(即通过电子邮件发送)——最好是在一个文件中。
在 WAL 模式下,我有主数据库文件 x.db3 以及 x.db3-wal 和 x.db3-shm,这对于此目的来说还不够好。因此,您的想法是pragma checkpoint(passive)
在每次插入、更新或删除操作之后执行,这样数据库实际上几乎总是由一个文件组成。就我而言,更新很少见,因此性能下降可能不是问题。我知道在检查点期间,读者将无法读取数据,而我可以处理它。但无论如何,我的直觉告诉我,这不是使用 WAL 日志记录的正确方法,这就是我要问的原因。在我看来,它“看起来”像是虐待。
对于使用这种方法可能遇到的问题,我将不胜感激。