当前位置:  开发笔记 > 数据库 > 正文

在"DELETE FROM table"之后更改sqlite文件大小

如何解决《在"DELETEFROMtable"之后更改sqlite文件大小》经验,为你挑选了2个好方法。

我正在使用sqlite3文件.

首先,我进入了比较大的数据库,文件大小约为100 MB.

比我做的

$db->exec("DELETE FROM table");

并只输入该数据库的一小部分.但文件大小仍然是100 MB.

删除内容时,如何更改sqlite文件大小?



1> Trent..:

您正在寻找的命令是真空.还有一个打开自动吸尘功能的pragma.

从文档:

从数据库中删除对象(表,索引,触发器或视图)时,它会留下空白空间.下次将新信息添加到数据库时,将重用此空白空间.但与此同时,数据库文件可能比严格必要的更大.此外,频繁的插入,更新和删除可能导致数据库中的信息碎片化 - 在整个数据库文件中被刮掉,而不是在一个地方聚集在一起.

VACUUM命令通过将其内容复制到临时数据库文件并从副本重新加载原始数据库文件来清除主数据库.这消除了空闲页面,将表数据对齐为连续,并以其他方式清理数据库文件结构.


有没有办法恢复尚未覆盖的已删除表行?

2> 小智..:

你可以这样做

$db->exec("DELETE FROM table");
$db->exec("vacuum");

并且文件大小将被更改.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有