我使用SQLCipher加密sqlite数据库,并使用FMDB通过使用[FMDB setKey:]调用对加密的数据库执行sqlite操作。

当对加密数据库使用SQLCipherFMDB时,我的应用程序运行缓慢。
如果我仅在非加密数据库上使用FMDB,则它可以正常工作,而无需占用更多的CPU使用率。

请在这里帮助我,如何解决CPU在SQLCipherFMDB中使用的内存?
提前致谢。

最佳答案

对于优化SQLCipher性能,有一些非常重要的准则:


请勿重复打开和关闭连接,因为按设计推导密钥非常昂贵
使用事务包装插入/更新/删除操作。除非在事务范围内执行,否则每个操作都将在其自己的事务中发生,这会使事情减慢几个数量级
确保您的数据已规范化(即使用良好做法将数据分为多个表以消除冗余)。不必要的数据重复会导致数据库膨胀,这意味着要在SQLCipher上运行更多页面
确保用于搜索或联接条件的所有列都已建立索引。如果您不这样做,SQLCipher将需要在大量页面上执行完整的数据库扫描
如果您进行大型删除,更新等操作,请定期清理以确保数据库紧凑。


最后,为了进一步诊断特定查询语句的性能,是否可以对某些查询运行explain query plan命令?说明查询命令的输出在here中描述。

关于ios - SQLCipher + FMDB在iOS设备上的性能很差,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23235318/

10-14 22:39