我如何使用" read commited"使用sqlite在ios app中的隔离级别?

时间:2014-09-16 12:52:41

标签: ios sqlite ios7 fmdb

我的ios应用程序使用FMDB框架来使用SQLite数据库。要从服务器更新数据库,我使用FMDatabaseQueue:

- (BOOL)executeUpdate:(NSString *)update
{
    FMDatabaseQueue *dbQueue = [FMDatabaseQueue databaseQueueWithPath:databasePath];
    __block BOOL success = NO;
    [dbQueue inTransaction:^(FMDatabase *db, BOOL *rollback) {
        success = [db executeUpdate: update];
    }];
    return success;
}

这种方法允许我使用多个线程来处理数据库。但查询将按接收顺序执行。当我更新数据库中的大块数据时,其他查询(比如获取UI线程的一些数据)必须等待太长时间。 有没有办法允许其他查询在更新过程中读取提交的数据?(如JDBC隔离级别TRANSACTION_READ_COMMITTED)

1 个答案:

答案 0 :(得分:2)

降低隔离级别仅适用于共享缓存模式,这在移动设备上没有意义。

要增加并发性,即允许读者和作者同时访问数据库,请启用WAL mode