(求助!)清空sqlite数据库中所有表后,磁盘空间占用仍然很大,求解???

时间:2021-09-03 13:57:11
作了一个数据采集程序,使用sqlite作为数据库,运行一段时间后,保存数据5G,然后用数据库管理工具清空所有表之后,发现该数据库文件仍然占用磁盘空间5G。。。。。
请教一下这是什么现象????多谢了

7 个解决方案

#1


SQLITE当你删除记录或者表时不会自动释放文件所占用的空间,需要执行 VACUUM 

#2


vacuum

#3


引用 1 楼  的回复:
SQLITE当你删除记录或者表时不会自动释放文件所占用的空间,需要执行 VACUUM

请问在sqlite3.exe.中的具体操作怎么写呢?多谢! 先要定位到数据库文件目录么

#4


sqlite3 VACUUM

more info:  sqlite.org

终端进入数据库

#sqlite3 test.db

在数据库里面查看该数据库是否会自动压缩空间

#sqlite>PRAGMA auto_vacuum;

手动压缩

#sqlite>VACUUM;

在建立表之前,可以设置属性通过以下command

#sqlite>PRAGMA auto_vacuum = 0 | 1;      (0 默认属性,关闭。1打开自动压缩)

ps:修改属性一定要在建立表之前,之后是没有效果的。

#5


引用 3 楼  的回复:
引用 1 楼  的回复:

SQLITE当你删除记录或者表时不会自动释放文件所占用的空间,需要执行 VACUUM

请问在sqlite3.exe.中的具体操作怎么写呢?多谢! 先要定位到数据库文件目录么
直接运行 sqlite3 dbname
然后执行VACUUM命令就行了。

#6


谢谢楼上两位

#7


非常感谢,学习了

#1


SQLITE当你删除记录或者表时不会自动释放文件所占用的空间,需要执行 VACUUM 

#2


vacuum

#3


引用 1 楼  的回复:
SQLITE当你删除记录或者表时不会自动释放文件所占用的空间,需要执行 VACUUM

请问在sqlite3.exe.中的具体操作怎么写呢?多谢! 先要定位到数据库文件目录么

#4


sqlite3 VACUUM

more info:  sqlite.org

终端进入数据库

#sqlite3 test.db

在数据库里面查看该数据库是否会自动压缩空间

#sqlite>PRAGMA auto_vacuum;

手动压缩

#sqlite>VACUUM;

在建立表之前,可以设置属性通过以下command

#sqlite>PRAGMA auto_vacuum = 0 | 1;      (0 默认属性,关闭。1打开自动压缩)

ps:修改属性一定要在建立表之前,之后是没有效果的。

#5


引用 3 楼  的回复:
引用 1 楼  的回复:

SQLITE当你删除记录或者表时不会自动释放文件所占用的空间,需要执行 VACUUM

请问在sqlite3.exe.中的具体操作怎么写呢?多谢! 先要定位到数据库文件目录么
直接运行 sqlite3 dbname
然后执行VACUUM命令就行了。

#6


谢谢楼上两位

#7


非常感谢,学习了