关于SQL2000数据库 未使用空间很大的问题
OS:WINDOWS2003
DB:Sql2000 +sp4
服务器:IBM 志强3.0 4G内存 应怕147G*2块
(第一次做系统做了 RAD0,后来做了一次系统 不知道是否做了RAD0)
问题描述:
最开始的时候数据库增长速度正常。自从服务器从做过一次操作系统后(前后操作系统都为WINDWS2003),数据库的增长速度明显增长过快,以前一天的增长就是几MB 或者10几MB ,现在基本每天150多MB的增长速度。
目前数据库文件有37GB多 日志文件1mb ,数据库设置了每周自动收缩。但是没什么效果。
现在在数据库上右键-》所有任务-》收缩数据库 选择数据文件 显示的最小收缩值和当前数据库大小值相同。
通过分析数据库表的空间占压情况如下
表名 记录数保留空间使用空间索引空间未用空间
a97034396034449470476963457944
b19376293563521170776138488171728
c2809646612392826144134485772800
d29460174176407521417619248
e365723112840021504054384858976
f6828556700312951384624725686456
...
表总合计264683237946840503476019452032717560
看到数据使用大小仅5G多尔未用空间就占用了32.7G
现在硬盘空间即将用满了 如何将32.7G 空间释放出来呢?
[解决办法]
DBCC SHOWCONTIG(B)
查看一下这些表的空间情况及碎片情况
收缩了没反应么?>
[解决办法]
UNUSED占用大量空间的原因是表中的碎片太多。
如果该表有聚集索引,那么重建(dbcc dbreindex)该聚集索引即可;如果没有聚集索引,则临时给它新建一个,建好后,再马上删掉。这两种方法的原理都是一样的,都是通过聚集索引来重新排列数据,将表中的碎片去掉。
把相关表全部按上面操作之后,再收缩数据文件即可
[解决办法]
由于聚集索引有组织数据的功能,把数据整理顺了,自然空出了很多空间,然后你DBCC SHOWCONTIG 中碎片多大80%多,已经达到了需要重建的地步了(微软建议30%以下:重组。30%以上:重建。)