我想知道当SQLite同时插入/更新/删除多个数据库时SQLite的行为如何?它是否会产生多个进程,理论上它们比使用单个数据库/单个进程具有更好的并发性,或者它们对每个进程使用相同的进程?
通过文档搜索并未提供明确的答案。我知道SQLite不是最理想的多次写入环境,因为数据库作为单个文件驻留。但这是否意味着多个文件=不同的写入过程?
databaseOne = connectToSqlite('databaseOne');
databaseTwo = connectToSqlite('databaseTwo');
function write()
queryDatabaseOne("INSERT SOMETHING INTO SOME_TABLE VALUES SOME_VALUES");
queryDatabaseTwo("INSERT SOMETHING INTO SOME_TABLE VALUES SOME_VALUES");
因此,两个不同的sqlite数据库和两个并行执行的插入对两个数据库中的表。
由于
答案 0 :(得分:1)
通常,数据库查询是阻塞的 - 它们在完成之前不会返回。这有助于确保数据库的完整性。 SQLITE API正在阻止。
当然,如果您有多个数据库,那么您可以使用非阻塞例程编写一个多线程应用程序,该例程调用SQLITE API,然后对多个数据库进行重叠,并行插入编码。您将不得不小心多线程应用程序中的所有常见事项 - SQLITE API既不会有助于不妨碍 - 增加了复杂性,确保不会重叠访问SAME数据库。