SQLite数据库中删除数据后,文件大小没有变化

yangchun1213 2012-06-12 04:12:05
我用SQLite Developer可视化工具创建了数据库和表,在表里插入了一百万的数据,可是我把数据删除后,文件大小仍然不变,网上搜了很多资料,都说执行命令PRAGMA auto_vacuum ,真不知道在SQLite Developer里怎么执行这个命令,我执行了:PRAGMA auto_vacuum = 1(在SQLite Developer里执行),可是还是木有变化,真不知怎么搞了。

Access也有类似的问题,但压缩和修复后可以减小文件大小
...全文
1473 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjian20 2013-12-23
  • 打赏
  • 举报
回复
执行删除命令后再执行VACUUM 就可以了
yangchun1213 2012-06-13
  • 打赏
  • 举报
回复
好吧,先谢谢楼上的各位大虾们,基本清楚了,呼呼~~~
EnForGrass 2012-06-13
  • 打赏
  • 举报
回复
就拿MSSQL来说,当你建立一个新数据库时,其实就已经分配了该数据库所占空间大小,mdf,ldf等文件大小
caoqinghua 2012-06-12
  • 打赏
  • 举报
回复
SQLite删除数据时不回收占用的空间,你需要执行 VACUUM 清理表

sql-statement ::= VACUUM [index-or-table-name]

用程序连接上 直接执行命令就可以了
  • 打赏
  • 举报
回复
随便说出另外十种可以正式商用的数据库(不仅仅关系数据库,面向对象数据库、NoSql数据库也算),您能够说出那一种数据库在删除数据后文件大小会变小的呢?

全都是这样的。这是数据库原理(磁盘块如何保存数据、如何维系和使用空闲空间)的基本常识。
yangchun1213 2012-06-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
你是说数据库离线的时候执行压缩?还是说让数据库在删除数据的时候都做整理。两者有本质的不同。
[/Quote]
删除数据后做处理。
顺便再问下,为什么我用SQLite Developer创建的数据库没有后缀,就是一个文件,而用sqlite3创建的数据库有后缀为:.db3这是啥情况,可以又可以用,真想不通
threenewbee 2012-06-12
  • 打赏
  • 举报
回复
你是说数据库离线的时候执行压缩?还是说让数据库在删除数据的时候都做整理。两者有本质的不同。
yangchun1213 2012-06-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
我不清楚有没有这样的办法,但是有一点,如果我是SQLite的作者,我绝对不会提供这样的功能。
[/Quote]

为什么呢?可是网上有很多说执行命令:vacuum
我就是不知道怎样在SQLite Developer里执行这个命令
threenewbee 2012-06-12
  • 打赏
  • 举报
回复
我不清楚有没有这样的办法,但是有一点,如果我是SQLite的作者,我绝对不会提供这样的功能。
yangchun1213 2012-06-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
基本数据库系统都被设计成这样。因为移动数据减少文件尺寸对性能有很大的影响。
[/Quote]

但是怎样才能设置SQLite数据库删除后改变其文件大小呢?能否具体点么?
threenewbee 2012-06-12
  • 打赏
  • 举报
回复
基本数据库系统都被设计成这样。因为移动数据减少文件尺寸对性能有很大的影响。
bdmh 2012-06-12
  • 打赏
  • 举报
回复
他们不会自己自动收缩空间的,需要额外的压缩,所以access提供了压缩方法

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧