如何在内存数据库中创建多个SQLite
How to create multiple SQLite in memory database
我的C++项目使用SQLite内存数据库。在我的项目中,将有多个线程同时读取和写入内存数据库中的SQLite。然而,不同的线程正在读取和更新不同的表,但我仍然会遇到SQLite数据库表锁定错误。如果我没有错的话,我知道当一个编写器编写表时,SQLite会锁定整个数据库文件,而不是所涉及的表。虽然我不确定,但我认为内存中的数据库也是如此。所以我实际上想创建多个内存中的数据库来解决这个问题。所以我的问题是,这可能吗?如果可能,怎么做?提前谢谢。
从整体的角度来看,即使SQLite不支持表或行级别的锁定(我相信它必须这样做),实现多个数据库只是为了绕过它,这听起来也是错误的做法。它最终会使您的应用程序变得不必要的复杂,只为了解决一个技术问题。
例如,如何连接多个数据库之间的表?您将如何同步交易?如果你不需要这样做,问问自己你是否真的需要RDBMS的功能——一系列基于Boost/STL的对象/集合会不会工作得不好,而且可能更快?
至于如何做到这一点。一些最好的信息实际上在StackOverflow上。以这个答案为例。
类似这样的东西:
ATTACH ':memory:' as SCHEMA1
ATTACH 'file:SCHEMA2?mode=memory&cache=shared' as SCHEMA2
来源:https://www.sqlite.org/inmemorydb.html
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 使用CMake创建QML插件
- 如何在c++中为模板函数实例创建快捷方式
- 查询SQLite数据库中的日期
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- Qt SQlite无法创建表
- 如何使用SQLite在qt中创建表?
- SqLite c++,可以创建数据库,但不能将 anthing 插入到表中
- 无法在C++中创建SQLite表(android)
- 在C++中创建 Sqlite 数据库
- 如何在内存数据库中创建多个SQLite
- 如何在Qt SQLite中创建多个连接
- 无法执行 sqlite SQL 文件来创建数据库
- 如何在Qt中创建SQLite数据库
- 为什么我不能在SQLite中的VIEW上创建触发器
- SQLite在QT创建查询
- 在Qt (c++)中创建SQLite数据库