出于性能和可靠性的原因,我想使用WAL模式。但是我的环境没有mmap()函数,所以我无法用WAL编译SQLite(WAL需要mmap()。)。虽然设置PRAGMA locking_mode=EXCLUSIVE
允许在没有mmap()的情况下使用WAL(在这种情况下,WAL-index是在堆内存而非共享文件上创建的),但对于管理多个数据库连接的应用程序来说,它不是一个好的解决方案。
我在一个进程中使用SQLite和多个数据库连接(用于线程间并发),而mmap()似乎只用于进程间内存共享。因为我希望有一种方法可以在单进程环境中使用没有mmap()的WAL。但我找不到好的解决方案。有什么想法可以解决这个问题吗?
感谢。
答案 0 :(得分:0)
SQLibrary中的代码总是为wal-index创建一个内存映射文件。
如果你想在不使用mmap的情况下使用WAL,你必须改变该代码,改为使用普通的共享内存块。