【发布时间】:2022-03-13 14:41:22
【问题描述】:
我有一个包含许多表的 SQLite 数据库。我们正在编写一个维护工具,该工具将从表中删除“陈旧”数据,直到该表的大小达到整个数据库文件的某个百分比或更小。
我知道如何确定数据库文件的大小——我通过执行来做到这一点
PRAGMA PAGE_SIZE;
和
PRAGMA PAGE_COUNT;
在两个单独的查询中并将两者相乘以获得文件大小(以字节为单位)。是的,我知道我可以只获取文件的大小(以字节为单位),但这类似于我在其他数据库中所做的方式,我想坚持下去,至少现在是这样。
我的问题是我不知道如何获取 TABLE 的大小。必须有某种方法来做到这一点。谁能指出我正确的方向?
【问题讨论】:
-
我不知道查询,但请查看sqlite.org/download.html 上的 sql_analize 工具,
./sqlite3_analyze path_to_db/database.sqlite > dbinfo.sql将为您提供有关磁盘上每个表大小的详细信息。 -
(如果是出于清理目的,删除记录后别忘了
VACUUM;) -
感谢您的提醒
-
您可以根据存储在该特定表中的记录数来触发操作,而不是查看表大小。您可以轻松获得的记录数。
-
@NewStackUser:谢谢你的建议。