WEB开发网
开发学院数据库MSSQL Server 数据表空间的重用(Reusing space in a table) 阅读

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

 2010-04-01 00:00:00 来源:WEB开发网   
核心提示: 可以看到:1000行数据占用500个数据页,每个页的空间使用率为99.8% 2.2 DROP掉一个栏位(比如col3) ALTER TABLE dbo.Test2 DROP COLUMN col3 ;运行SQL DMV之后看到的是: 和DROP掉一个栏位之前一样的是:1000行数据占用500个数

可以看到:

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

1000行数据占用500个数据页,每个页的空间使用率为99.8% 2.2 DROP掉一个栏位(比如col3)

ALTER TABLE dbo.Test2 DROP COLUMN col3 ;

运行SQL DMV之后看到的是:

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

和DROP掉一个栏位之前一样的是:1000行数据占用500个数据页,每个页的空间使用率为99.8%.SQL Server并没有回收不用的空间,没有从数据页从移除掉那一栏的数据. SQL Server的做法只是更新系统表中的元数据,在查询时这一列不会作为结果集显示出来,数据所占的空间也不会被释放掉. 2.3 添加数据

--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查询:

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

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

3.空间回收(DBCC CLEANTABLE)

在某些情况下SQL Server会自动的回收空间重复利用,但是在某些情况下则不会. 可以通过DBCC Command来回收不用的空间.

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

运行过之后可以看到:

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

回收不用的空间以后,页面空间使用率大大降低.还是503个页,并没有压缩. 在DROP,DELETE之后用DBCC CLEANTABLE可以及时回收做删除标记的资料作占用的空间,可以更好的提高页面和磁盘的空间利用率.

上一页  1 2 3 4 

Tags:数据表 空间 重用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接