美文网首页
应用程序的兼容性WAL(预写日志记录)

应用程序的兼容性WAL(预写日志记录)

作者: ben3726 | 来源:发表于2018-08-28 22:03 被阅读0次

原文:https://source.android.com/devices/tech/perf/compatibility-wal

Android 9引入一种 名为Compatibility WAL(预写日志记录)的 SQLite数据库的特殊模式,它允许数据库使用journal_mode=WAL,同时保留每个数据库最多保持一个连接的行为。

应用程序的数据库默认启用兼容性WAL,除非应用程序具有:

  1. 通过调用SQLiteDatabase.enableWriteAheadLoggingdisableWriteAheadLogging选择加入或禁止预写日志记录
  2. 通过调用SQLiteDatabase.OpenParams.setJournalMode(String mode)显式请求日志模式

启用WAL日志模式可以显著提高性能并减少写入量。例如,在ext4文件系统上,WAL可以使写入速度提高4倍。

兼容性WAL默认启用,不需要任何其他实现。

注:对于使用Room的应用程序 ,默认情况下启用完全预写日志记录模式(不是兼容性WAL)。这适用于运行API 16及更高版本的设备,并且未归类为 低内存设备。有关更多信息,请参阅 RoomDatabase.JournalMode AUTOMATIC

禁用兼容性WAL

要禁用兼容性WAL模式,请复写 db_compatibility_wal_supported 配置资源。

例如:

<bool name="db_compatibility_wal_supported">false</bool>

对于WAL日志模式不提供优于传统回滚日志模式的性能优势的配置,您可能需要禁用兼容性WAL。例如,在F2FS文件系统上,虽然SQLite支持原子写入并且DELETE日志性能类似于WAL,但WAL可以将写入量增加10%到15%。

验证

要验证兼容性WAL模式,请从CtsDatabaseTestCases模块运行 CTS测试。启用兼容性WAL时,CTS测试将验证预期的行为。

注:禁用兼容性WAL模式时,CTS测试通过。

相关文章

网友评论

      本文标题:应用程序的兼容性WAL(预写日志记录)

      本文链接:https://www.haomeiwen.com/subject/dslcwftx.html