您的位置:程序门 -> delphi -> 数据库相关



我发现一个删除表记录的问题请懂得人帮我解释一下


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


我发现一个删除表记录的问题请懂得人帮我解释一下[已结贴,结贴人:xfox_ying]
发表于:2007-01-21 16:23:18 楼主
我在数据库里把一张表的内容添加到了
另一张表(lsb)中去

本来数据库的大小只有280kb
添加完成后变成了320kb

然后我把lsb中的数据删除后,发现数据库大小还是320kb并没有变小

我用的是delet   *   from   lsb  

进数据库看了一下lsb里面也没有记录,为什么数据库会变大后不再变小呢?

发表于:2007-01-21 16:29:181楼 得分:20
本来删除数据之后,也不见得就立刻释放数据文件占用的磁盘空间啊。
数据库系统可能采用了某些优化策略,比如下次再需要用空间时,可以用上次释放的那些,而不见得又得再去跟操作系统申请,这样可以提高数据库的效率。
发表于:2007-01-21 16:31:382楼 得分:0
试想一下,如果你每次加入一些记录,数据库都要到操作系统那里申请磁盘空间(说不定还要为此挪动数据),而每次删除一些记录,数据库也要立马把空间还给系统(说不定又要为此挪动记录),那数据库存取的效率如何保证?
发表于:2007-01-21 16:39:203楼 得分:0
access吗?压缩数据库就可以了。
删除了记录空间是不会变小的,增加记录之后肯定是会变大的。
发表于:2007-01-21 16:59:324楼 得分:0

steedhorse(晨星)  
说的对啊

我知道了,但是设想一下我一直在做着数据的添加和删除来处理大容量记录

那么数据库的容量不就是增加了吗?

可不可以在delphi中使用个代码来实现压缩数据库(当数据库增大到一定的程度)呢?

怎么写这个代码?
发表于:2007-01-21 17:06:305楼 得分:0
你删除了之后下次再增加时,原来删除时省出来的空间完全有可能被重用的,所以顶多是一直不减,而不可能总是增。

每到一定时间压缩数据库应该是可以实现的,但每种数据库系统提供的方法可能不一样,这个只有查一查你用的数据库的手册了,里边应该提供压缩数据库的方法,你每隔一段时间设法调用一下就是了。

另外,数据库压缩时是否需要断开所有数据库连接我也不是很清楚,应该每种产品不可能都一样吧。
我觉得,当一个数据库上还存在活动连接时,如果你压缩它,至少可能引起效果不彻底。
发表于:2007-01-21 17:06:556楼 得分:0
偶不懂delphi,也只能说这么多了。:p
发表于:2007-01-21 17:11:067楼 得分:0
你比我懂的多啦
谢谢哦


快速检索

最新资讯
热门点击