微软BI开拓者数据库专区SQL Server管理 SQL Server中,不加条件的delete操作,即清空表,对表的空间如何释放

1  /  1  页   1 跳转 查看:2198

SQL Server中,不加条件的delete操作,即清空表,对表的空间如何释放

SQL Server中,不加条件的delete操作,即清空表,对表的空间如何释放

我用dbcc extentinfo查看,每次实验的结果有所不同,有时保留一个区,有时保留三个区,好像数据量越大,保留的越多,这个有什么具体的算法吗。
 

回复:SQL Server中,不加条件的delete操作,即清空表,对表的空间如何释放

我用的是SQL Server2008
 

回复: SQL Server中,不加条件的delete操作,即清空表,对表的空间如何释放

这要看表是不是一个堆了。
就算在堆里删除了所有行,sql server也不会在GAM里把这些空闲页的标记改为示分配状态。这点你可以在sys.dm_db_partition_stats里看到,空间还是属于堆表的。

如果表不是堆,被删除的行的存储空间的第一个字节的第八位(bits 7)会被标识为1,即标识为虚影记录。在操作系统的低负荷情况下,sql server会真正的清除这些空间。当页里的行记录数为零时,整个页就会被回收(但如果这个页是表中的唯一分页则不会被回收)
 

回复:SQL Server中,不加条件的delete操作,即清空表,对表的空间如何释放

关注下!!!
 
1  /  1  页   1 跳转

版权所有 微软BI开拓者 

Powered by Discuz!NT 2.1.202    Copyright © 2001-2012 Comsenz Inc.
Processed in 0.0312512 second(s) , 3 queries.
返顶部