一. 理论知识:
synchronous 获取或设置当前磁盘的同步模式,该模式用于控制SQLite写入磁盘的时机。
当设置为OFF后,写入性能可提高3倍。大约提升到 300 的 qps
二. 关于sqlite 优化MTK建议:
4. full和normal最大的区别在于full模式下于SQLite数据库引擎在紧急时刻会暂停以确定数据已经写入磁盘,而normal模式下SQLite数据库引擎只会在大部分紧急时刻会暂停,但不像FULL模式下那么频繁。因此目前Google给出的明确潜在风险是,在normal模式下有很小的几率发生电源故障导致数据库损坏的情况。
某些客户会进行客制化,将sync mode改为normal,但是敝司没有遇到过客户客制化后提相关的异常问题。贵司可以尝试将sync mode该问题normal进行压测。
三. 代码配置:
android/frameworks/base/core/res/res/values/config.xml
<!-- The database synchronization mode when using the default journal mode. FULL is safest and preserves durability at the cost of extra fsyncs. NORMAL also preserves durability in non-WAL modes and uses checksums to ensure integrity although there is a small chance that an error might go unnoticed. Choices are: FULL, NORMAL, OFF. --> <string name="db_default_sync_mode" translatable="false">FULL</string>
讯享网
四. 测试结果:

(1) 3G内存项目测试对比:
配置FULL: 配置NORMAL: 配置OFF:


(2) 6G内存项目测试对比:
配置FULL: 配置NORMAL: 配置OFF:



从测试结果上看,产生的效果影响还是挺大的.也符合理论: OFF >NORMAL>FULL. 3G 内存的手机的配置, Sqlite的insert,update,delete 至少相差2倍. 6G 内存的提升大概在50%~60%.
五. 建议:
从理论上分析,NORMAL 风险不是很大,可以将db_default_sync_mode 配置成NORMAL.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/26271.html