创建我的第一个SQLite数据库以便在Android应用程序中使用后,我发现它只需要几个'drop table'操作后就非常需要压缩等。然后在阅读了一些SQLite文档之后,它有意义 - 为什么 - 不同在大多数数据库中,SQLite使用可变长度记录来非常有效地存储数据。但这告诉我,在日常使用中,它需要一直压缩以保持最佳的空间效率 - 特别是在内部存储器非常宝贵的Android设备上。
一旦部署在设备上,这可以通过Android应用程序以编程方式完成吗?经常这样做或者明智地做到这一点是常见的吗?我问这个是因为我不知道Android设备的内部存储器是什么类型的内存 - 如果像SD卡这样的闪存然后经常更改数据库(或者实际上任何文件)对它的生命周期不利,那么它不是?
答案 0 :(得分:1)
以后插入的任何新数据都会重用释放的空间。 (这与可变长度记录无关。)
如果您删除了大量数据且知道在不久的将来不会重用可用空间,则可以执行VACUUM命令。
经常这样做可能会影响闪光灯的使用寿命。 但是,如果经常这样做,您经常做在释放之前使用数据库文件中的空间,因此压缩文件只是为了稍后扩展它是没有意义的。 因此,闪存寿命考虑与何时执行VACUUM无关。