java - 如何在android中使用sqlite VACUUM
问题描述
我有一个涉及登录到应用程序的 android 应用程序,它执行许多 CRUD 操作。当用户第一次登录时,如果有任何可供该用户下载的数据,它会快速记录他/她。但是后来重新登录时,这个过程很慢,有时需要20到30分钟左右。因此,我阅读了有关使用 VACUUM 来避免删除记录时创建的可用空间的信息。
我有点困惑何时以及如何使用 VACUUM,是在用户登录时打开数据库吗?或其他时间。
对此的任何建议都会有所帮助。谢谢
解决方案
来自:https ://sqlite.org/lang_vacuum.html
运行 VACUUM 可确保每个表和索引大部分连续存储
在数据库文件中
关于许多 CRUD 操作:db 文件通常会变得碎片化,
尤其是当这些操作涉及删除大量数据时。
使用 Java 代码非常简单:
db.execSQL("VACUUM");
尽管该过程可能需要一段时间,并且无法监控其进度。
当然,您不需要每次运行应用程序时都执行此语句,而是定期执行。
或者你可以让用户执行这个过程,如果他/她在加载数据,甚至登录时遇到延迟,在你明确这样的操作,就像任何重建操作一样不是 100% 安全的,所以首先建议一个备份。
推荐阅读
- selenium - 使用 Selenium 跨越多行文本时如何通过文本识别元素
- r - 如何将数据值舍入到 R 中的新列和组中
- ubuntu-18.04 - Virtualmin 外发电子邮件进入垃圾邮件文件夹
- javascript - 有没有办法通过 HTML 将两个参数传递给 JavaScript 函数?
- javascript - 在 firebase 查询中使用 2 个 order 参数,但结果不是由它们中的任何一个排序的
- docker - 主机 Web 浏览器无法访问 docker 容器
- git - 在 Azure DevOps 中对拉取请求运行选择性测试用例
- c++ - 将相对路径传递给 ifstream c++
- reactjs - 反应旋转手风琴箭头 Onclick
- python-3.x - TypeError:不可散列的类型:'dict'。无法使用 Dask 读取 Parquet 文件