我正在使用sqlite3文件。
首先,我进入了比较大的数据库,文件大小约为100 mb。
比我做的
$db->exec("DELETE FROM table");
并输入该数据库的一小部分。但文件大小仍然是100 MB。
删除内容时,如何更改sqlite文件大小?
答案 0 :(得分:95)
您要查找的命令是vacuum。还有一个pragma可以自动吸尘。
来自文档:
当一个对象(表,索引,触发器, 从数据库中删除或查看) 它留下了空旷的空间。这个 空的空间将在下一次重复使用 时间新信息被添加到 数据库。但在此期间, 数据库文件可能大于 严格必要的。另外,经常 插入,更新和删除都可以 导致数据库中的信息 变得支离破碎 - 被刮掉了 相反,整个数据库文件 而不是聚集在一起。
VACUUM命令清除主要内容 数据库通过将其内容复制到 临时数据库文件和重新加载 来自的原始数据库文件 复制。这消除了免费页面, 将表数据对齐为连续的, 并以其他方式清理数据库 文件结构。
答案 1 :(得分:25)
你可以这样做
$db->exec("DELETE FROM table");
$db->exec("vacuum");
,文件大小将被更改。
答案 2 :(得分:-3)
清理数据库 SQLite有两个专门用于清理重新索引和真空的命令。 reindex用于重建索引。它有两种形式: reindex collation_name; reindex table_name | index_name;