Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLCipher+;iOS设备上的FMDB性能较差_Ios_Objective C_Sqlite_Fmdb_Sqlcipher - Fatal编程技术网

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?