sqlite多个数据库插入/更新/删除

时间:2011-10-02 14:05:00

标签: sqlite concurrency multiple-files

我想知道当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数据库和两个并行执行的插入对两个数据库中的表。

由于

1 个答案:

答案 0 :(得分:1)

通常,数据库查询是阻塞的 - 它们在完成之前不会返回。这有助于确保数据库的完整性。 SQLITE API正在阻止。

当然,如果您有多个数据库,那么您可以使用非阻塞例程编写一个多线程应用程序,该例程调用SQLITE API,然后对多个数据库进行重叠,并行插入编码。您将不得不小心多线程应用程序中的所有常见事项 - SQLITE API既不会有助于不妨碍 - 增加了复杂性,确保不会重叠访问SAME数据库。