美文网首页
解决SQLlite数据删除后占用空间不变的问题

解决SQLlite数据删除后占用空间不变的问题

作者: 骑着蜗牛去攻城 | 来源:发表于2018-05-11 21:40 被阅读0次

    解决方法:两种

    一,在数据删除后,手动执行VACUUM命令,执行方式很简单

    objSQLHelper.ExecuteNonQuery(CommandType.Text, "VACUUM")

    VACUUM命令会清空“空闲列表”,把数据库尺寸压缩到最小。但是要耗费一些时间。

    FQA里面说,在Linux的环境下,大约0.5秒/M。并且要使用两倍于数据库文件的空间。

    使用Navicat 软件的话,则在打开命令界面,手工输入 VACUUM;

    回车即可;

    二,在数据库文件建成中,将auto_vacuum设置成“1”。

    注意:只有在数据库中未建任何表时才能改变auto-vacuum标记。试图在已有表的情况下修改不会导致报错。

    cmd.CommandText = "PRAGMA auto_vacuum = 1;"

    cmd.ExecuteNonQuery()

    当开启auto-vacuum,当提交一个从数据库中删除除数据的事物时,数据库文件自动收缩。

    数据库会在内部存储一些信息以便支持这一功能,这使得数据库文件比不开启该选项时稍微大一些。

    我的表结构,不含任何数据是,数据库文件大小是25K左右,开了auto_vacuum之后是26K。

    插入运行基础数据后,文件变成35K,开了auto_vacuum之后是36K。

    变化不大,无所谓。

    相关文章

      网友评论

          本文标题:解决SQLlite数据删除后占用空间不变的问题

          本文链接:https://www.haomeiwen.com/subject/kypqdftx.html