我们正在为小型ARM设备构建传感器数据收集linux应用程序,数据存储在SD卡上的SQLite数据库中。由于资源有限,我希望每隔一段时间定期检查(物理)数据库大小并丢弃旧数据。
我可以使用C ++或OS函数来获取文件大小,但我认为如果我可以通过查询直接从DB获取文件大小,那将更加优雅和便携。有办法吗?
答案 0 :(得分:0)
删除数据不会减小文件大小(免费页面只保留在数据库文件中,可以重新用于新数据)。
通过执行VACUUM来减少数据库文件的大小,但实际上需要三倍的文件大小来复制文件。
没有机制来查询文件大小;你必须使用一些操作系统功能。但是要找出有多少免费页面,请使用PRAGMA freelist_count。
为防止数据库变得太大,请使用PRAGMA max_page_count(并准备好处理导致的错误)。