SQLite:没有mmap()函数有没有办法使用WAL?

时间:2014-05-08 11:07:06

标签: sqlite compilation wal

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

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

感谢。

1 个答案:

答案 0 :(得分:0)

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

如果你想在不使用mmap的情况下使用WAL,你必须改变该代码,改为使用普通的共享内存块。