您的位置:首页 > 其它

数据表空间的重用(Reusing space in a table)

2010-03-29 14:06 381 查看
如果删除掉一些数据行,我是否需要压缩SQL Server数据库? 以便于这些空间可以被重新使用.这是一个很好的问题,切经常被问到,其中涉及到SQL Server数据库对删除的管理以及压缩机制.

1.理解SQL Server怎样自动的重新利用数据表的空间,下面以实例来做简要的说明.

1.1 建立临时测试数据

创建一个测试table: Test,填空1000行数据.

代码[code]--insert additional rows
DECLARE @cnt INT ;
SET @cnt = 0 ;
WHILE @cnt < 500
BEGIN
SET @cnt = @cnt + 1 ;
INSERT INTO dbo.Test2 ( col1,col2 )VALUES (
@cnt,'test row # ' + CAST(@cnt AS VARCHAR(10))) ;
END


再次运行SQL DMV查询:[/code]

1500行的数据占用503个数据页,每个页的空间使用率为99.7%,可以看到新增三个数据页.如果空间可以重用的话,应该会有足够多的空间存储新增的500行数据,并不需要新增数据页.

3.空间回收(DBCC CLEANTABLE)

在某些情况下SQL Server会自动的回收空间重复利用,但是在某些情况下则不会.

可以通过DBCC Command来回收不用的空间.

DBCC CLEANTABLE('TEST', 'dbo.Test2') ;


运行过之后可以看到:[/code]

回收不用的空间以后,页面空间使用率大大降低.还是503个页,并没有压缩.

在DROP,DELETE之后用DBCC CLEANTABLE可以及时回收做删除标记的资料作占用的空间,可以更好的提高页面和磁盘的空间利用率.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐