我是否可以实现对内存中SQLite数据库的可扩展多线程访问
我有一个多线程Linux C ++应用程序,需要一个高性能的参考数据查找工具。我一直在考虑使用内存中的SQLite数据库,但是在我的多线程环境中看不到这种方法可以扩展。
即使所有事务都是只读的,默认线程模式(序列化)似乎也会受到单个粗粒度锁定的影响。此外,我不相信我可以使用多线程模式,因为我无法创建到单个内存数据库的多个连接(因为每次调用sqlite3_open(“:memory:”,& db)都会创建一个单独的-memory数据库)。
所以我想知道的是:在文档中是否有我遗漏的内容,并且可以让多个线程共享来自我的C ++应用程序的相同内存数据库的访问权限。
或者,我可以考虑使用SQLite的替代方案吗?
没有找到相关结果
已邀请:
2 个回复
膛嵌墒缅欠
要么,
这允许单独的数据库连接共享相同的内存数据库。当然,共享内存数据库的所有数据库连接都需要在同一个进程中。当数据库的最后一个连接关闭时,将自动删除数据库并回收内存。 如果在单个进程中需要两个或多个不同但可共享的内存数据库,则mode = memory查询参数可与URI文件名一起使用以创建命名的内存数据库:
要么,
当以这种方式命名内存数据库时,它将仅与使用完全相同名称的另一个连接共享其缓存。
坍锭嘉韭蓝