在SQLite中,数据库文件的大小是数据库的总大小,但这不一定是实际使用空间的正确指示。如果删除了数据,则释放的空间不会返回给操作系统。必须执行VACUUM命令对数据库进行碎片整理并将未使用的空间释放回操作系统。
我正在使用SQL Devart ADO.Net data provider。
有没有办法获取SQLite数据库的实际已用空间?
答案 0 :(得分:3)
我找到了一个pragma freelist_count,它根据SQLite documentation提供了数据库文件中未使用的页面数。就数据库文件中的总可用空间而言,这并不精确,因为仍有许多页面被部分填充。
尽管如此,下面仍然为我们提供了准确的免费页数,足以满足我对数据库文件中已用空间与可用空间的粗略估计的需求。
PRAGMA freelist_count;
PRAGMA page_size;
答案 1 :(得分:0)
乘以page_count和page_size pragma返回的值可能会很好地估计数据库的大小:
PRAGMA page_count;
PRAGMA page_size;