关于sqlite3删除表内数据后,数据库大小仍然不 变的问题

    最近由于项目的需要,用到了sqlite3数据库相关的操作。因为之前用的是QT中自带的,不是用C语言来操作,不过总的来说相差不大。之前是在 操作数据库过程中,会导致内存不断的增加。后来是发现操作的过程中很多内存没有释放。但是最近又有新的问题是,在我删除表中的数据后,发现数据库文件的大小仍然不变,而且下次打开数据库后,发现仍然占用着系统的内存。找了很多方法,终于让我找到了根本原因。原来是因为从Sqlite删除数据后,未使用的磁盘空间被添加到一个内在的”空闲列表”中用于存储你下次插入的数据。磁盘空间并没有丢失。但是也不向操作系统返回磁盘空间。需要手动执行VACUUM命令进行删除。

    记住,如果在做其他操作或者有事务操作的时候,VACUUM命令会执行失败。

猜你喜欢

转载自blog.csdn.net/jutun5887/article/details/78984814