紧急求助!数据库mdf文件增长太快了,不是日志文件!

时间:2022-11-13 21:39:26
his数据库最近增长太快了,基本上每天接近200M,以前每天最多增加5M,数据量和以前基本上差不多的
用exec sp_spaceused查询了其中的一些表与前段时间备份的数据库作了比较,比如
exec sp_spaceused 'MZ_GHDJB'分别对两个数据库查询
name      rows       reserved      data        index_size       unused             
MZ_GHDJB  82515      537960 KB     24744 KB  262224 KB 250992 KB
MZ_GHDJB  281079     378928 KB     34624 KB  293808 KB 50496 KB
第一行对应的数据库前段时间把表中的历史数据删除了一部分,就是现在用的,第二行对应的数据库是历史数据删除前的数据库,第一行rows为82515比第二行的少了近20万行,但是reserved的空间却比下面的多了近200M,这是什么原因啊,正常情况下应该第二行reserved的空间应该比第一行的大很多,怎么解决啊,求各位老师指教!

21 个解决方案

#1


mdf文件收缩一下

#2


收缩了,不行的,MDF文件中的实际使用空间在增大,不是单纯的文件增大

#3


不用收缩,反正空间能用

或者说你不必作任何处理,也不必大惊小怪。

删除后,空间归到unused ,以后增加的数据就会占用,一段时间数据库文件不会增长,好过现在收缩了再增长出来

几百M的大小,差十倍也没多少,不用理他

#4


有两个办法:
1.新建一个表把表MZ_GHDJB2,然后把把表MZ_GHDJB数据导入到MZ_GHDJB2中,然后删除MZ_GHDJB,将MZ_GHDJB2更名为MZ_GHDJB.
2.重建MZ_GHDJB聚集索引。

#5


整理下磁盘碎片。

#6


重建一下所有表的索引(聚集索引),再收缩看看!

楼主看看导入到新的库有多大。

#7


重建了索引,空间减少不多,现在是每天增长200M左右,以前每天增长只有5M,照这个速度几个月磁盘空间就不够了

#8


现在每天的数据增长与之前(每天5M)时候相比,数据增长量相同?

#9


数据增长量基本相同的

#10


也就是最近半个多月才增长这么快的

#11


顶一下 我也是受害者之一 我们的服务器 IBM服务器 至强CPU 硬盘是最新的sc硬盘做的RAD1 
操作系统为 WIN2003+SQL2000+sql2000SP4补丁 原来每天10M增长 
后来服务器出问题 重做了下操作系统 操作系统仍为WIN2003 +sql2000+sql2000sp4补丁现在每天以200MB的速度增长  现在还没想好怎么处理呢。

#12


也就是最近半个多月才增长这么快的

#13


我现在的情况和你的基本上是一样的,急啊!

#14


不知道说的这200M是指整库,还是指单个表?

#15


1.新建一个表把表MZ_GHDJB2,然后把把表MZ_GHDJB数据导入到MZ_GHDJB2中,然后删除MZ_GHDJB,将MZ_GHDJB2更名为MZ_GHDJB.
2.重建MZ_GHDJB聚集索引。
我试了用这个方法是可以的,但是HIS中的表太多了,这样做工作量太大,很多表都有触发器,还有些事关联的,数据量又大,容易出错的,有没有什么更好的办法啊

#16


更好的办法就是加硬盘,省心了

#17


引用 15 楼 xiecy77 的回复:
1.新建一个表把表MZ_GHDJB2,然后把把表MZ_GHDJB数据导入到MZ_GHDJB2中,然后删除MZ_GHDJB,将MZ_GHDJB2更名为MZ_GHDJB.
2.重建MZ_GHDJB聚集索引。
我试了用这个方法是可以的,但是HIS中的表太多了,这样做工作量太大,很多表都有触发器,还有些事关联的,数据量又大,容易出错的,有没有什么更好的办法啊


把所有表的聚集索引都重建下,再收缩。

#18


我们这边也出现这个问题啊,SQL2000,以前好几年都没什么事,最近MDF每三天增大一个G啊,吓人啊,数据量河访问量都跟以前差不多,不至于啊。。。求高手指点。。。

#19


我仔细查了一下不是所有的表都是这样的,把相关的表找出来,聚集索引删掉重建就把空间释放出来了,一切正常了,就是不知道是什么原因导致的!谢谢各位

#20


引用 19 楼 xiecy77 的回复:
我仔细查了一下不是所有的表都是这样的,把相关的表找出来,聚集索引删掉重建就把空间释放出来了,一切正常了,就是不知道是什么原因导致的!谢谢各位


说明这些表经常用删除操作,而删除时,空间并不能释放掉,所以你虽然删除数据了,但只要你的表还在插入数据,表占用的空间就会不断的增大。

#21


引用 20 楼 i_element 的回复:
引用 19 楼 xiecy77 的回复:

我仔细查了一下不是所有的表都是这样的,把相关的表找出来,聚集索引删掉重建就把空间释放出来了,一切正常了,就是不知道是什么原因导致的!谢谢各位


说明这些表经常用删除操作,而删除时,空间并不能释放掉,所以你虽然删除数据了,但只要你的表还在插入数据,表占用的空间就会不断的增大。


#1


mdf文件收缩一下

#2


收缩了,不行的,MDF文件中的实际使用空间在增大,不是单纯的文件增大

#3


不用收缩,反正空间能用

或者说你不必作任何处理,也不必大惊小怪。

删除后,空间归到unused ,以后增加的数据就会占用,一段时间数据库文件不会增长,好过现在收缩了再增长出来

几百M的大小,差十倍也没多少,不用理他

#4


有两个办法:
1.新建一个表把表MZ_GHDJB2,然后把把表MZ_GHDJB数据导入到MZ_GHDJB2中,然后删除MZ_GHDJB,将MZ_GHDJB2更名为MZ_GHDJB.
2.重建MZ_GHDJB聚集索引。

#5


整理下磁盘碎片。

#6


重建一下所有表的索引(聚集索引),再收缩看看!

楼主看看导入到新的库有多大。

#7


重建了索引,空间减少不多,现在是每天增长200M左右,以前每天增长只有5M,照这个速度几个月磁盘空间就不够了

#8


现在每天的数据增长与之前(每天5M)时候相比,数据增长量相同?

#9


数据增长量基本相同的

#10


也就是最近半个多月才增长这么快的

#11


顶一下 我也是受害者之一 我们的服务器 IBM服务器 至强CPU 硬盘是最新的sc硬盘做的RAD1 
操作系统为 WIN2003+SQL2000+sql2000SP4补丁 原来每天10M增长 
后来服务器出问题 重做了下操作系统 操作系统仍为WIN2003 +sql2000+sql2000sp4补丁现在每天以200MB的速度增长  现在还没想好怎么处理呢。

#12


也就是最近半个多月才增长这么快的

#13


我现在的情况和你的基本上是一样的,急啊!

#14


不知道说的这200M是指整库,还是指单个表?

#15


1.新建一个表把表MZ_GHDJB2,然后把把表MZ_GHDJB数据导入到MZ_GHDJB2中,然后删除MZ_GHDJB,将MZ_GHDJB2更名为MZ_GHDJB.
2.重建MZ_GHDJB聚集索引。
我试了用这个方法是可以的,但是HIS中的表太多了,这样做工作量太大,很多表都有触发器,还有些事关联的,数据量又大,容易出错的,有没有什么更好的办法啊

#16


更好的办法就是加硬盘,省心了

#17


引用 15 楼 xiecy77 的回复:
1.新建一个表把表MZ_GHDJB2,然后把把表MZ_GHDJB数据导入到MZ_GHDJB2中,然后删除MZ_GHDJB,将MZ_GHDJB2更名为MZ_GHDJB.
2.重建MZ_GHDJB聚集索引。
我试了用这个方法是可以的,但是HIS中的表太多了,这样做工作量太大,很多表都有触发器,还有些事关联的,数据量又大,容易出错的,有没有什么更好的办法啊


把所有表的聚集索引都重建下,再收缩。

#18


我们这边也出现这个问题啊,SQL2000,以前好几年都没什么事,最近MDF每三天增大一个G啊,吓人啊,数据量河访问量都跟以前差不多,不至于啊。。。求高手指点。。。

#19


我仔细查了一下不是所有的表都是这样的,把相关的表找出来,聚集索引删掉重建就把空间释放出来了,一切正常了,就是不知道是什么原因导致的!谢谢各位

#20


引用 19 楼 xiecy77 的回复:
我仔细查了一下不是所有的表都是这样的,把相关的表找出来,聚集索引删掉重建就把空间释放出来了,一切正常了,就是不知道是什么原因导致的!谢谢各位


说明这些表经常用删除操作,而删除时,空间并不能释放掉,所以你虽然删除数据了,但只要你的表还在插入数据,表占用的空间就会不断的增大。

#21


引用 20 楼 i_element 的回复:
引用 19 楼 xiecy77 的回复:

我仔细查了一下不是所有的表都是这样的,把相关的表找出来,聚集索引删掉重建就把空间释放出来了,一切正常了,就是不知道是什么原因导致的!谢谢各位


说明这些表经常用删除操作,而删除时,空间并不能释放掉,所以你虽然删除数据了,但只要你的表还在插入数据,表占用的空间就会不断的增大。