我们正在为小型 ARM 设备构建传感器数据收集 Linux 应用程序,数据存储在 SD 卡上的 SQLite 数据库中。由于资源有限,我想定期检查(物理)数据库大小并每隔一段时间删除旧数据。
我可以使用 C++ 或 OS 函数来获取文件大小,但我认为如果我可以通过查询直接从数据库中获取文件大小,它会更加优雅和可移植。有办法吗?
最佳答案
删除数据不会减小文件大小(空闲页面仅保留在数据库文件中,可以重新用于新数据)。
减少数据库文件大小是通过执行 VACUUM 完成的,但这实际上需要三倍的文件大小来复制文件。
没有查询文件大小的机制;你必须使用一些操作系统功能。但是要找出有多少空闲页面,请使用 PRAGMA freelist_count .
为防止数据库变得太大,使用PRAGMA max_page_count (并准备好处理由此产生的错误)。
关于linux - 查询SQLite数据库文件大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41630719/