首页 > 解决方案 > 如何在android中使用sqlite VACUUM

问题描述

我有一个涉及登录到应用程序的 android 应用程序,它执行许多 CRUD 操作。当用户第一次登录时,如果有任何可供该用户下载的数据,它会快速记录他/她。但是后来重新登录时,这个过程很慢,有时需要20到30分钟左右。因此,我阅读了有关使用 VACUUM 来避免删除记录时创建的可用空间的信息。

我有点困惑何时以及如何使用 VACUUM,是在用户登录时打开数据库吗?或其他时间。

对此的任何建议都会有所帮助。谢谢

标签: javaandroidsqliteandroid-sqlite

解决方案


来自:https ://sqlite.org/lang_vacuum.html

运行 VACUUM 可确保每个表和索引大部分连续存储
在数据库文件中

关于许多 CRUD 操作:db 文件通常会变得碎片化,
尤其是当这些操作涉及删除大量数据时。
使用 Java 代码非常简单:

db.execSQL("VACUUM");

尽管该过程可能需要一段时间,并且无法监控其进度。
当然,您不需要每次运行应用程序时都执行此语句,而是定期执行。
或者你可以让用户执行这个过程,如果他/她在加载数据,甚至登录时遇到延迟,在你明确这样的操作,就像任何重建操作一样不是 100% 安全的,所以首先建议一个备份。


推荐阅读