什么';压缩sqlite3db的有效方法是什么?

什么';压缩sqlite3db的有效方法是什么?,sqlite,Sqlite,经过几次删除和插入,我们的sqlite3从300K膨胀到了4MB以上。在FirefoxSQLite3管理器中,我们打开数据库并压缩它。尺寸没有变化。然后,我们将db文件移动到响应sqlite3命令的服务器上。我们(由拉尔斯·温多尔夫(Lars Windolf)在真空方面)做了如下工作: 然而,没有任何尺寸减少。我们有点没主意了。压缩sqlite3的有效方法是什么?谢谢。我成功地用真空填充压缩了SQLite数据库 sqlite3 /path/to/db/mydb.sqlite3 'VACUUM F

经过几次删除和插入,我们的sqlite3从300K膨胀到了4MB以上。在FirefoxSQLite3管理器中,我们打开数据库并压缩它。尺寸没有变化。然后,我们将db文件移动到响应sqlite3命令的服务器上。我们(由拉尔斯·温多尔夫(Lars Windolf)在真空方面)做了如下工作:


然而,没有任何尺寸减少。我们有点没主意了。压缩sqlite3的有效方法是什么?谢谢。

我成功地用
真空填充压缩了SQLite数据库

sqlite3 /path/to/db/mydb.sqlite3 'VACUUM FULL'

您可以安装SQLiteDatabaseBrowser和“文件”菜单以进行压缩

请参见SQLite的Img:

您可以压缩表格:

sqlite> VACUUM table_name;
压缩整个数据库:

sqlite> VACUUM;
设置为自动压缩整个数据库,当您有删除/更新记录时,它会收缩:

sqlite> PRAGMA auto_vacuum = FULL;
设置为自动压缩数据库,但必须手动激活:

sqlite> PRAGMA auto_vacuum = INCREMENTAL;

你是在插入疯狂的大片段吗?不是,只是一些短串唱片。嗯。您可以转储并重新创建数据库,看看会发生什么。如果重新创建的对象同样大,请查看转储文件中是否有任何令人惊讶的对象
echo.dump'| sqlite3 mydb.sqlite>dump.sql
然后
cat dump.sql | sqlite3 mydb2.sqlite
。显示
sqlite3_分析器的输出
。我们最终将两个表(大约30个表中的一个)导出并导入到一个干净的数据库中,大小只增加了50K(到350K,膨胀的一个超过4MB)。我们在sqlite3管理器中尝试了VACCUM&compact,在sqlite3命令行中尝试了VACCUM&compact,但都没有成功。不知道真空吸尘器为什么不工作。我收到
错误:未知数据库已满
。也不要提及
FULL
。我认为正确的命令是没有参数的
VACUUM
sqlite> PRAGMA auto_vacuum = INCREMENTAL;