2025年SQLite 优化配置

SQLite 优化配置一 理论知识 synchronous 获取或设置当前磁盘的同步模式 该模式用于控制 SQLite 写入磁盘的时机 通过上述可以看到 sqlite3 默认采用最安全也是最慢的方式来刷盘写入数据库 如果我们业务中对 数据丢失的情况不是太敏感 而更关注于性能 我们可以设置为 OFF

大家好,我是讯享网,很高兴认识大家。
一. 理论知识:

  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. 

小讯
上一篇 2025-01-16 18:50
下一篇 2025-01-17 16:22

相关推荐

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