SQL Server中sp

  • 时间:
  • 浏览:3

62

Avg. Bytes Free per Page

当当我们都都知道sp_spaceused的精确单位是页。它是根据sys.allocation_units 和sys.partitions 这两张管理视图来计算存储空间的。有就让 ,这两张表将会上能 及时反映出数据的准确信息。上上能 通过updateusage这人 参数,要求SQL Server为这人 指令更新管理视图里的统计信息。其他这人 案例中,sp_spaceused不准确的因为并全是将会这两张表这样 及时反映出数据的准确信息,而是我实验中按照特殊规律,在每一页都删除两根记录,保留两根记录,因为每一页上释放了接近一半的空间,其他页的填充程度接近60 %,从而再次出显页面碎片化非常严重的具体情况,而sp_spaceused的精确单位是页,从而因为这人 特殊的具体情况再次出显。

4077.8

接下来当当我们都都删除了id为偶数的记录。

当当我们都都删除了一半记录,照理说,数据使用的空间总量(data)应该变化了。这样 我使用DBCC SHOWCONTIG('space_test')来看看,如下截图所示,

Avg. Page Density (full)

而是就让 ,当当我们都都一直 使用sp_spaceused来查看表的空间使用具体情况,上个月群里有个外国外国网友见面说他使用DELETE删除了数据后,使用sp_spaceused查看,发现该表的分配的空间总量(reserved)与数据使用的空间总量(data)这样 变化,当时和他讨论了并分析了一下因为,随手记录了一下这人 案例,这人 周末刚好很糙时间,正好分析采集一下这人 案例、分享在这篇文章。如下所示,当当我们都都先构造数据,当当我们都都的测试案例比较极端,就让 保证每个页面(page)刚好存储两条记录。如下所示:

如下截图所示,当当我们都都删除了60 00条记录,还剩下60 00条记录,其他该表的分配的空间总量(reserved)与数据使用的空间总量(data)这样 变化,依然是60 08KB和60 00KB

删除前

让人发现每页的平均可用字节数(Avg. Bytes Free per Page) 和平均页密度(满)(Avg. Page Density (full))再次出显了变化。如下对比所示:

EXEC sp_spaceused 'dbo.space_test'

删除后

49.62%

我我觉得这人 倒这样 必要大惊小怪,这人 空间我我觉得这样 释放,其他下次依然上上能 再次利用,就好比一列火车,每节车厢只载了一半乘客,上边的路程中,上上能 继续往上边加入新的乘客。如下所示当当我们都都插入60 00条记录,让人发现页的平均密度变化了,就让 空闲的空间被重新利用了。

99.23%

DELETE dbo.space_test WHERE id %2=0