2

出于性能和可靠性的原因,我想使用 WAL 模式。但是我的环境没有 mmap() 函数,所以我不能用 WAL 编译 SQLite(WAL 需要 mmap()。)。虽然设置PRAGMA locking_mode=EXCLUSIVE允许在没有 mmap() 的情况下使用 WAL(在这种情况下,WAL-index 是在堆内存而不是共享文件上创建的),但对于管理多个数据库连接的应用程序来说,这不是一个好的解决方案。

我在一个进程中使用具有多个数据库连接(用于线程间并发)的 SQLite,而 mmap() 似乎仅用于进程间内存共享。因为我希望有一种方法可以在单进程环境中使用没有 mmap() 的 WAL。但我找不到好的解决方案。有什么想法可以解决这个问题吗?

谢谢。

4

1 回答 1

0

SQLibrary 中的代码总是为 wal-index 创建一个内存映射文件。

如果您想在没有 mmap 的情况下使用 WAL,则必须更改该代码以使用普通的共享内存块。

于 2014-05-08T12:34:38.050 回答