sqlite 内存数据库和多线程
我的应用程序使用 sqlite 作为后端创建一个内存数据库 (:memory:)。
我希望我的主线程创建与内存数据库的连接,并且该连接由多个线程共享。这可能吗? SQLite 3.7.8 现已可供下载。
共享缓存是一种可能的方法吗?
My application creates a in-memory database (:memory:) using sqlite as a back end.
I want my master thread to create a connection to a in-memory database and this connection to be shared by multiple threads. Is this possible? SQLite 3.7.8 is available for download right now.
Is the shared cached a possible way to go?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您使用序列化模式打开与内存数据库的连接,则该连接可能会在多个线程之间共享。
为此,您的 SQLite 必须编译为 threadsafe ——这是默认设置。
根据您的应用程序,通过磁盘数据库的大型共享缓存,或者如果您有许多读取器线程,则使用 WAL 模式可能会获得更好的性能。
示例:
If you open the connection to your in-memory database using serialized mode, then the connection may be shared among multiple threads.
For this to work, your SQLite must be compiled threadsafe -- this is the default.
Depending on your application, you may get better performance with a large shared cache to an on-disk database, or with WAL mode if you have many reader threads.
Example: