【发布时间】:2015-02-05 04:38:29
【问题描述】:
我正在使用 FMDatabaseQueue 来使用 GCD 与 fmdb 一起工作。 但 GCD 没有帮助。
当我尝试在某一时刻多次执行任何执行更新查询时,我的应用程序被冻结了。
为了提高我所做的性能 - 复杂查询以减少查询次数 - 使用开始和提交事务 - 使用 setShouldCacheStatements 但没有任何帮助
这里是一些代码示例 func complexQuery(sqlQuery: String) -> Bool {
var result = false
self.databaseQueue.inDatabase() { database in
database.setShouldCacheStatements(true)
database.beginTransaction()
result = database.executeStatements(sqlQuery)
database.commit()
}
【问题讨论】:
-
也许你应该
close和open你的FMDatabase。请检查此stackoverflow.com/a/18216818/1866077 -
请澄清“我的申请被冻结了”。应用程序完全死锁了吗?或者只是在另一个线程上进行许多更新时暂时停止。确切地说,我们在这里谈论多久?另外,您在
sqlQuery中进行了多少次更新?result是否表示成功完成? -
我“在另一个线程上进行许多更新时只是暂时停止”冻结。它在 3 个查询中接近 4000 次更新。结果是成功的。谢谢
标签: ios performance swift freeze fmdb