如何在Android中使用sqlite VACUUM

时间:2018-12-18 18:39:28

标签: java android

我有一个涉及登录应用程序的Android应用程序,它执行许多CRUD操作。用户首次登录时,如果有可供该用户下载的任何数据,它将迅速记录该用户。 但是稍后再次登录时,该过程非常缓慢,有时大约需要20到30分钟。因此,我读到有关使用VACUUM避免删除记录时创建的可用空间的信息。

我什么时候以及如何使用VACUUM感到有些困惑,是在打开数据库时才登录用户?或其他时间。

任何有关此的建议将有所帮助。 谢谢

1 个答案:

答案 0 :(得分:2)

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

  

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

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

db.execSQL("VACUUM");

尽管该过程可能需要一段时间,并且无法监视其进度。
当然,您不需要在每次运行应用程序时都执行此语句,而是定期执行。
或者,如果他/她在加载数据或什至登录时遇到延迟,则您可以让用户执行此过程,在您确认此类操作(就像任何重构操作都不是100%安全的)之后,因此请先提出一个建议。备份。