当前位置:   article > 正文

SQLite 优化配置_sqlite 性能

sqlite 性能
一. 理论知识:

  synchronous 获取或设置当前磁盘的同步模式,该模式用于控制SQLite写入磁盘的时机。

     

通过上述可以看到,sqlite3默认采用最安全也是最慢的方式来刷盘写入数据库。如果我们业务中对
数据丢失的情况不是太敏感,而更关注于性能,我们可以设置为OFF。

当设置为OFF后,写入性能可提高3倍。大约提升到 300 的 qps

二. 关于sqlite 优化MTK建议:

 1.敝司对SQLite没有做任何修改,即保持Google原生。
 2.SQLite默认的sync mode 为full,但是敝司有了解到有些客户(如小米 OPPO)会进行客制化,即将sync mode修改为normal,这样SQLite数据库引擎在大部分紧急时刻会暂停,但   3. normal不像FULL模式下那么频繁,从而提升了操作速度。

  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

  1. <!-- The database synchronization mode when using the default journal mode.
  2. FULL is safest and preserves durability at the cost of extra fsyncs.
  3. NORMAL also preserves durability in non-WAL modes and uses checksums to ensure
  4. integrity although there is a small chance that an error might go unnoticed.
  5. Choices are: FULL, NORMAL, OFF. -->
  6. <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. 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/681543
推荐阅读
相关标签
  

闽ICP备14008679号