linux - 查询SQLite数据库文件大小?

标签 linux sqlite

我们正在为小型 ARM 设备构建传感器数据收集 Linux 应用程序,数据存储在 SD 卡上的 SQLite 数据库中。由于资源有限,我想定期检查(物理)数据库大小并每隔一段时间删除旧数据。

我可以使用 C++ 或 OS 函数来获取文件大小,但我认为如果我可以通过查询直接从数据库中获取文件大小,它会更加优雅和可移植。有办法吗?

最佳答案

删除数据不会减小文件大小(空闲页面仅保留在数据库文件中,可以重新用于新数据)。

减少数据库文件大小是通过执行 VACUUM 完成的,但这实际上需要三倍的文件大小来复制文件。

没有查询文件大小的机制;你必须使用一些操作系统功能。但是要找出有多少空闲页面,请使用 PRAGMA freelist_count .

为防止数据库变得太大,使用PRAGMA max_page_count (并准备好处理由此产生的错误)。

关于linux - 查询SQLite数据库文件大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41630719/

相关文章:

django -/在尝试写入只读数据库时出现OperationalError

android - 想要在整数列表中返回 0 IF SUM(something) 为 null

linux - 逐行读取文件并在每行中打印第一个匹配项,或者在没有匹配项时打印 "no_data"

linux - 需要 TAR shell 脚本帮助

mysql - 错误 1030 (HY000) 在第 25 行 : Got error 168 from storage engine

android - 从 ListView 中删除自定义 ListView 中的项目,单击按钮

ios - 如何在 swift 3 中访问我现有的 SQLite 数据库

java - 光标!= null 但null?

java - JRE 是否支持 posix TZ 描述而不是 TZ 名称?

linux - 将当前项目添加到 SVN 但忽略某些文件类型