SQLCipher+;iOS设备上的FMDB性能较差
我使用SQLCipher+;iOS设备上的FMDB性能较差,ios,objective-c,sqlite,fmdb,sqlcipher,Ios,Objective C,Sqlite,Fmdb,Sqlcipher,我使用SQLCipher加密sqlite数据库,并使用FMDB通过调用[FMDB setKey://code>对加密数据库执行sqlite操作 当我在加密数据库上使用SQLCipher和FMDB时,我的应用程序运行缓慢。 如果我只在未加密的数据库上使用了FMDB,那么它可以正常工作,而不会占用更多的设备cpu 请在这里帮助我解决如何使用SQLCipher&FMDB? 提前感谢。有一些非常重要的准则可用于优化SQLCipher性能: 不要反复打开和关闭连接,因为键派生是非常昂贵的 使用事务来包装
SQLCipher
加密sqlite数据库,并使用FMDB
通过调用[FMDB setKey://code>对加密数据库执行sqlite操作
当我在加密数据库上使用SQLCipher
和FMDB
时,我的应用程序运行缓慢。
如果我只在未加密的数据库上使用了FMDB
,那么它可以正常工作,而不会占用更多的设备cpu
请在这里帮助我解决如何使用SQLCipher
&FMDB
?
提前感谢。有一些非常重要的准则可用于优化SQLCipher性能:
- 不要反复打开和关闭连接,因为键派生是非常昂贵的
- 使用事务来包装插入/更新/删除操作。除非在事务作用域中执行,否则每个操作都将发生在它自己的事务中,这会将速度降低几个数量级
- 确保数据规范化(即,使用良好的做法将数据分离到多个表中以消除冗余)。不必要的数据复制会导致数据库膨胀,这意味着SQLCipher需要操作更多的页面
- 确保为用于搜索或联接条件的所有列编制索引。如果不这样做,SQLCipher将需要跨大量页面执行完整的数据库扫描
- 如果执行大型删除、更新等操作,请定期清理数据库,以确保数据库紧凑
最后,为了进一步诊断特定查询语句的性能,能否对某些查询运行命令?explain query命令的输出已被描述。我遇到了完全相同的问题:(在哪里可以以某种方式修复?@cam?