当我运行SELECT语句(与相应的视图相同)时,连接3个表,执行几个“liKE”(使用EXPLAIN优化),桌面客户端cpu(带有sqlcipher)需要3毫秒进行查询.
然而,使用Cordova-sqlitePlugin的Android上的相同查询花费了近1900ms – 由于打开数据库的成本约为1800毫秒,这显然在每次页面加载后重复.
查询的发布方式如下:
var db = window.sqlitePlugin.openDatabase({name: "myDatabase",key: "mySecret",bgType: 1}); db.transaction(function(transaction) { transaction.executesql(query,[],function(transaction,result) { callback(result); },null); },null,null);
有什么我能做的吗?
提前感谢任何提示和线索……
干杯克里斯
解决方法 sqlCipher打开数据库的性能故意很慢. sqlCipher使用密钥PBKDF2来执行密钥派生(即数千个SHA1 *** 作)以防止暴力破解和字典攻击.有关更多信息,请参阅 http://sqlcipher.net/design.最好的选择是缓存数据库连接,以便可以多次使用它,而无需在每个屏幕上打开和键入数据库.如果可以,在启动期间打开数据库一次是首选的 *** 作过程.对同一数据库句柄的后续访问不会触发密钥派生,因此性能将非常快.
如果这不可能,则另一个选项是禁用或削弱密钥派生.这将导致sqlCipher在导出密钥时使用更少轮的PBKDF2.虽然这会使数据库打开得更快,但从安全角度来看,它显着变弱.因此通常不建议这样做.也就是说,这里有关于如何减少KDF迭代的信息:
http://sqlcipher.net/sqlcipher-api/#kdf_iter
总结以上是内存溢出为你收集整理的用cordova和Cordova-SQLitePlugin实现android – sqlcipher’open’性能全部内容,希望文章能够帮你解决用cordova和Cordova-SQLitePlugin实现android – sqlcipher’open’性能所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)