这几天使用SQLite发现个问题,原空数据库只有10K,往数据库写1M的数据,写完数据之后,数据库房有将近1034K左右,这时再将数据清空,发现数据库的大小依然没变,还是1034,我就奇了怪了,朋友告诉我应该是VACUUM的原因,网上了查了下,网上的解释如下:
当你从Sqlite删除数据后,未使用的磁盘空间被添加到一个内在的”空闲列表”中用于存储你下次插入的数据。磁盘空间并没有丢失。但是也不向操作系统返回磁盘空间。
找到原因就得知,在建表之前需要设置VACUUM,VACUUM的默认值是0,可以建表之后查询VACUUM的值,查询命令,PRAGMA auto_vacuum,VACUUM在建表之后是不能修改的,所以必须得在建表之前设置它的值,执行命令PRAGMA auto_vacuum = 1;
当你从Sqlite删除数据后,未使用的磁盘空间被添加到一个内在的”空闲列表”中用于存储你下次插入的数据。磁盘空间并没有丢失。但是也不向操作系统返回磁盘空间。
找到原因就得知,在建表之前需要设置VACUUM,VACUUM的默认值是0,可以建表之后查询VACUUM的值,查询命令,PRAGMA auto_vacuum,VACUUM在建表之后是不能修改的,所以必须得在建表之前设置它的值,执行命令PRAGMA auto_vacuum = 1;