解决sqlite删除数据后,文件大小不变问题(VACUUM)
2014-06-04 17:24
1266 查看
删除表格的全部数据:
DELETE FROM [Name]
当在sqlite中删除了大量数据后,数据库文件的大小还是那样,没有变。原因是:从Sqlite删除数据后,未使用的磁盘空间被添加到一个内在的”空闲列表”中用于存储你下次插入的数据。磁盘空间并没有丢失。但是也不向操作系统返回磁盘空间。
解决方法有以下两种:
1,在数据删除后,手动执行SQL"VACUUM"命令,执行方式很简单。推荐使用。
2,在数据库文件建成中,将auto_vacuum设置成“1”。但是第二个方法同样有缺点,只会从数据库文件中截断空闲列表中的页, 而不会回收数据库中的碎片,也不会像VACUUM 命令那样重新整理数据库内容。实际上,由于需要在数据库文件中移动页, auto-vacuum 会产生更多的碎片。而且,在执行删除操作的时候,也有那个.db-journal文件产生。要使用 auto-vacuum,需要一些前题条件。 数据库中需要存储一些额外的信息以记录它所跟踪的每个数据库页都找回其指针位置。 所以,auto-vacumm
必须在建表之前就开启。在一个表创建之后, 就不能再开启或关闭 auto-vacumm。
DELETE FROM [Name]
当在sqlite中删除了大量数据后,数据库文件的大小还是那样,没有变。原因是:从Sqlite删除数据后,未使用的磁盘空间被添加到一个内在的”空闲列表”中用于存储你下次插入的数据。磁盘空间并没有丢失。但是也不向操作系统返回磁盘空间。
解决方法有以下两种:
1,在数据删除后,手动执行SQL"VACUUM"命令,执行方式很简单。推荐使用。
2,在数据库文件建成中,将auto_vacuum设置成“1”。但是第二个方法同样有缺点,只会从数据库文件中截断空闲列表中的页, 而不会回收数据库中的碎片,也不会像VACUUM 命令那样重新整理数据库内容。实际上,由于需要在数据库文件中移动页, auto-vacuum 会产生更多的碎片。而且,在执行删除操作的时候,也有那个.db-journal文件产生。要使用 auto-vacuum,需要一些前题条件。 数据库中需要存储一些额外的信息以记录它所跟踪的每个数据库页都找回其指针位置。 所以,auto-vacumm
必须在建表之前就开启。在一个表创建之后, 就不能再开启或关闭 auto-vacumm。
相关文章推荐
- 解决sqlite删除数据后,文件大小不变问题(VACUUM)
- 解决sqlite删除数据后,文件大小不变问题
- 解决sqlite删除数据后,文件大小不变问题
- 解决sqlite删除数据后,文件大小不变问题
- 解决sqlite删除数据或者表后,文件大小不变的问题
- 解决sqlite删除数据后,文件大小不变问题 转载
- sqlite3删除数据,文件不变小问题解决
- 压缩Sqlite数据文件大小,解决数据删除后占用空间不变的问题
- 压缩Sqlite数据文件大小,解决数据删除后占用空间不变的问题
- C#中如何解决sqlite数据表/记录删除后数据库内存不变的问题
- 解决sqlite 删除记录后数据库文件大小不变
- 解决sqlite 删除记录后数据库文件大小不变
- 解决sqlite 删除记录后数据库文件大小不变
- SQLite Expert表分离和解决SQLite Expert删除表后大小不变的问题
- 如何解决电脑数据文件被误删除的问题
- Android sqlite数据删除解决自增id问题
- Android sqlite数据删除解决自增id问题
- sqlite文件大小问题,删除不干净,彻底清空数据库
- 解决mysql delete表数据后,表空间大小不变的问题
- 解决:OUTLOOK删除邮件后数据文件的大小不会改变