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

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

 2010-04-01 00:00:00 来源:WEB开发网   
核心提示: 可以看到储存1000条数据依然用到152页,但是每个页的空间使用率从43.2%提高到了65.%,说明SQL Server重用表中多余的空间,而没有增加新的数据页. 在此请注意用到的测试表是用堆存储结构(没有建立索引),表中数据行没有预先特定的排序.在索引表中也同样适用,SQL Server会很好

可以看到储存1000条数据依然用到152页,但是每个页的空间使用率从43.2%提高到了65.%,说明SQL Server重用表中多余的空间,而没有增加新的数据页.  在此请注意用到的测试表是用堆存储结构(没有建立索引),表中数据行没有预先特定的排序.在索引表中也同样适用,SQL Server会很好的重用表中空余的空间(holes). 1.4 CLean Up

--clean up

DROP TABLE dbo.Test ;

2.SQL Server不自动回收空间时

在某种情况下,SQL Server并不会自动的回收已经不用的空间.如果一个表的定义被改变(比如说DROP掉一个或者几个栏位),已经消耗掉的空间并不会被SQL Server立即重用. 下面举例说明: 2.1 建立测试数据

CREATE TABLE dbo.Test2
(
col1 INT
,col2 CHAR(25)
,col3 VARCHAR(4000)
) ;
--create some test data
DECLARE @cnt INT ;
SET @cnt = 0 ;
WHILE @cnt < 1000
BEGIN
SET @cnt = @cnt + 1 ;
INSERT INTO dbo.Test2 ( col1,col2,col3) VALUES (
@cnt,'test row # ' + CAST(@cnt AS VARCHAR(10)),REPLICATE('A', 4000)) ;
END

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

查看原图(大图)

同上一个例子一样运行SQL DMV的查询,针对table:Test2

--SQL DMV
select alloc_unit_type_desc,page_count,avg_page_space_used_in_percent,record_count 
from sys.dm_db_index_physical_stats(db_id(),object_id('Test2'),NULL,NULL,'Detailed')

上一页  1 2 3 4  下一页

Tags:数据表 空间 重用

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