[随手记系列]SQLite数据库.db | .db-wal | .db-shw到底是个啥,为什么我导出.db里面没数据呢?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/heming9174/article/details/85108035

开个新坑吧
就当是写日记好了.
每天写一点当天碰到的有意思的东西.
也许完全木有技术含量,没有干货.
就那么几句话…

emmm…
最近给公司写个新的项目,
生命不息,作死不止,
想着数据库方面,用点没用过的吧,于是用了谷歌全家桶的ROOM

数据库表结构创建没啥好说的,基本都大同小异.
之前做的项目,要么是原生的,要么是只需要读取,就没关心过
为什么我能正常操作,但是.db导出来里面就没数据呢?.db-wal咋还一直在变大呢?

各种网上查…
长话短说,其实就是ROOM在默认情况下使用了SQLite3.7的新特性.也就是预写日志(WAL).
具体原理网上搜索关键字,大把科普的.

主要是使用了这个模式,是将原子操作进行缓存,避免每次操作等flush到储存,提高效率.
这也就是为什么我.db一直没反应,.db-wal一直在变大了.
啊!!!
但是我不可能一直把所有数据放在.db-wal文件里面吧.

如果我想要看数据咋办?
其实是当.db-shw和.db-wal缓存到一定的大小后,就会写入到.db里面去.

如果我现在就要看数据咋办?
Android设备,连上adb,debug环境,打开Device File Explorer,打开对应的包名,database.
一次性把3个文件全部Save As出来,打开.db,就会发现很神奇的能看到所有数据了.

我擦…原来我之前看不了是因为我一次只导出了.db文件的原因…

猜你喜欢

转载自blog.csdn.net/heming9174/article/details/85108035