【问题标题】:FMDB freeze application when running execute update query运行执行更新查询时 FMDB 冻结应用程序
【发布时间】: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()
}

【问题讨论】:

  • 也许你应该 closeopen 你的 FMDatabase。请检查此stackoverflow.com/a/18216818/1866077
  • 请澄清“我的申请被冻结了”。应用程序完全死锁了吗?或者只是在另一个线程上进行许多更新时暂时停止。确切地说,我们在这里谈论多久?另外,您在sqlQuery 中进行了多少次更新? result 是否表示成功完成?
  • 我“在另一个线程上进行许多更新时只是暂时停止”冻结。它在 3 个查询中接近 4000 次更新。结果是成功的。谢谢

标签: ios performance swift freeze fmdb


【解决方案1】:

尝试在执行查询之前在 FMDB 实例上调用 closeOpenResultSets

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    相关资源
    最近更新 更多