如何确定 SQLite 数据库的数据库使用情况?
在 SQLite 中,数据库文件的大小是数据库的总体大小,但这不一定是实际使用空间的正确指示。如果删除数据,释放的空间不会返回给操作系统。必须执行 VACUUM 命令对数据库进行碎片整理并将未使用的空间释放回操作系统。
我正在使用 SQLite 的 Devart ADO.Net 数据提供程序。
有没有办法获取SQLite数据库的实际使用空间?
In SQLite the size of the database file is the overall size of the database, but this is not necessarily a correct indication of the actual space used. If data is deleted, the freed space is not returned to the operating system. One has to execute the VACUUM command to defragment the database and release unused space back to the operating system.
I am using the Devart ADO.Net data provider for SQLite.
Is there a way to obtain the actual used space of a SQLite database?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我找到了一个pragma freelist_count,它根据SQLite文档提供了数据库中未使用页面的数量文件。就数据库文件内的总可用空间而言,这并不精确,因为仍然可能有许多页面被部分填充。
尽管如此,下面仍然为我们提供了免费页面的准确计数,并且足以满足我粗略估计数据库文件中已用空间与可用空间的需要。
I found a pragma freelist_count, which according to the SQLite documentation provides the number of unused pages in the database file. This is not precise as far as the total free space within the database file, as there can still be many pages that are partially filled.
Nonetheless, the below still provides us with an accurate count of free pages and suffices for my needs in getting a rough estimate of the used versus free space within the database file.
将 page_count 和 page_size 编译指示返回的值相乘可能会为您提供对数据库大小的良好估计:
Multiplying the values returned by the page_count and page_size pragmas might give you a good estimate of the size of the DB: