原因是:
sqlite采用的是变长纪录存储,当你从Sqlite删除数据后,未使用的磁盘空间被添加到一个内在的”空闲列表”中用于存储你下次插入的数据,用于提高效率,磁盘空间并没有丢失,但也不向 *** 作系统返回磁盘空间,这就导致删除数据乃至清空整个数据库后,数据文件大小还是没有任何变化,还是很大
一,在数据删除后,手动执行VACUUM命令,执行方式很简单
sqlite> vacuum;
VACUUM命令会清空“空闲列表”,把数据库尺寸压缩到最小。但是要耗费一些时间。
FQA里面说,在Linux的环境下,大约05秒/M。并且要使用两倍于数据库文件的空间。
我憎恨此FQA,他只说系统环境,不说机器硬件环境。我在测试手机上执行用了将近13秒时间压缩了将近3M的空间。至于它所占用的另一部分空间,是生成了一个db-journal后缀名的临时文件。(这个问题对我现在来说是无所谓的。)
压缩一下就好了。
或者直接把后缀改成cab,使用的时候使用ACCESS打开。
ACCESS软件包括很多多余的后台处理代码,每一个视图生成过程都会有很多未清理得痕迹,你可以做个实验,拖放一个按钮到窗体上,查看他的代码,你会发现他已经再后台生成了一堆代码。压缩得目的,就是处理这些冗余分配空间。
以上就是关于rustsqlite删除成功但是数据没变全部的内容,包括:rustsqlite删除成功但是数据没变、ACCESS数据库变的非常大,如何瘦身、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)