如何缩小 sqlite 数据库?

2022-09-01 01:58:02

一旦完成将所有数据存储到sqlite中,它已经达到了14 MB。这就是为什么我担心有些人无法从连接慢速区域下载我的应用程序。有没有办法缩小sqlite数据库?


答案 1

你试过真空吗

VACUUM 命令将重建整个数据库。应用程序可能执行此操作的原因有多种:

  • 除非 SQLite 在“auto_vacuum=FULL”模式下运行,否则当从数据库文件中删除大量数据时,它会留下空白空间或“可用”数据库页。这意味着数据库文件可能大于绝对必要的大小。运行 VACUUM 重建数据库将回收此空间并减小数据库文件的大小。
  • 频繁的插入、更新和删除可能会导致数据库文件变得碎片化 - 其中单个表或索引的数据分散在数据库文件周围。运行 VACUUM 可确保每个表和索引在很大程度上连续存储在数据库文件中。在某些情况下,VACUUM还可以减少数据库中部分填充的页面数量,从而进一步减小数据库文件的大小...

VACUUM 命令的工作原理是将数据库的内容复制到临时数据库文件中,然后用临时文件的内容覆盖原始文件。覆盖原始文件时,回滚日志或预写日志 WAL 文件与任何其他数据库事务一样使用。这意味着,在对数据库进行 VACUUMing 时,可用磁盘空间中需要的大小是原始数据库文件大小的两倍...


答案 2

一些提示:

  • SQLite有点懒于回收未使用的空间;使用真空命令或自动真空模式

  • datbase格式以牺牲空间效率来快速访问。如果只是转储数据内容,无论是作为 SQL 转储还是只是每个数据库表的 CVS 文件,则可能会得到较小的文件。

  • 使用 databse 文件或纯数据,请尝试压缩它们。


推荐