【发布时间】:2012-01-04 12:52:19
【问题描述】:
我在我的 iOS 应用程序中使用 SQLite,当用户与 UI 交互时,我有很多保存/加载工作要做。这是一个问题,因为它使 UI 非常不稳定和缓慢。
我尝试在另一个线程中执行这些操作,但我认为这在 SQLite 中是不可能的。如果我这样做,我会经常收到错误代码 SQLITE_BUSY 和 SQLITE_LOCKED。
有没有办法在多线程中做到这一点而没有这些错误代码,还是我应该放弃 SQLite?
【问题讨论】:
-
您是否尝试过调整您使用的查询并查看查询计划以查看是否需要任何索引?
-
进行多次写入时是否使用事务?你应该 - 它会产生巨大的影响。
-
Frederick Cheung:我正在使用多次写入和检索。我会看看索引是否会有所帮助,但是要插入很多记录,所以我认为索引不会有帮助。 Hot Licks:我在使用多次写入时不进行事务处理。我应该使用相同的锁对数据库中的每次写入执行此操作吗?
-
您应该将一组写入与事务括起来。否则每次写入都是 start-transaction/write/end-transaction,并且它是 end-transaction 需要的所有时间。 (这在 SQLite 文档中有明确说明。)
标签: objective-c ios multithreading performance sqlite