0
点赞
收藏
分享

微信扫一扫

【sqlite3数据库,疑难杂症】sqlite3 删除大量数据后,db文件大小未变小问题


核心方案: VACUUM

VACUUM 命令通过复制主数据库中的内容到一个临时数据库文件,然后清空主数据库,并从副本中重新载入原始的数据库文件。这消除了空闲页,把表中的数据排列为连续的,另外会清理数据库文件结构。

如果表中没有明确的整型主键(INTEGER PRIMARY KEY),VACUUM 命令可能会改变表中条目的行 ID(ROWID)。VACUUM 命令只适用于主数据库,附加的数据库文件是不可能使用 VACUUM 命令。

如果有一个活动的事务,VACUUM 命令就会失败。VACUUM 命令是一个用于内存数据库的任何操作。由于 VACUUM 命令从头开始重新创建数据库文件,所以 VACUUM 也可以用于修改许多数据库特定的配置参数。

DEMO:

1.已存在一个tetete.db库,大小为32k

创建一个表后,大小为40k

【sqlite3数据库,疑难杂症】sqlite3 删除大量数据后,db文件大小未变小问题_主数据

【sqlite3数据库,疑难杂症】sqlite3 删除大量数据后,db文件大小未变小问题_sqlite3_02

2.删除这个表,db文件大小仍为40k

【sqlite3数据库,疑难杂症】sqlite3 删除大量数据后,db文件大小未变小问题_主数据_03

【sqlite3数据库,疑难杂症】sqlite3 删除大量数据后,db文件大小未变小问题_VACUUM_04

3.输入VACUUM指令,db文件大小更新

【sqlite3数据库,疑难杂症】sqlite3 删除大量数据后,db文件大小未变小问题_主数据_05

【sqlite3数据库,疑难杂症】sqlite3 删除大量数据后,db文件大小未变小问题_sqlite3_06

支持

【sqlite3数据库,疑难杂症】sqlite3 删除大量数据后,db文件大小未变小问题_数据_07

举报

相关推荐

0 条评论