空表在Microsoft SQL Server 2008 R2中使用了多少空间?

时间:2015-02-25 12:35:26

标签: sql-server sql-server-2008-r2

没有人想简单地删除记录,所以我和我的同事讨论了附加"删除"是否会更好。 flag(数据类型bit),或创建表的副本并移动"删除"记录到副本中。

因为我们期望删除操作数量较少p.a.但是我们的数据中有大量的记录,简单的位可能会增长很多,这就是我们讨论重复表的原因。

因此问题:空表在SQL Server 2008 R2中使用了多少空间?

3 个答案:

答案 0 :(得分:2)

查看表在SQL Server数据库中使用的空间:

  • 在SQL Server Management Studio中,从对象资源管理器中选择表,然后从查看菜单访问对象资源管理器详细信息。 (关键字快捷键: F7

以下是显示数据库中所有表的元数据的屏幕截图。 enter image description here

答案 1 :(得分:2)

创建表时,它的长度为零。 从表中删除时,它不会释放所有已用空间。 截断表时,它将释放所有已用空间。

CREATE TABLE Test(ID int, Name nchar(4000))
GO

EXEC sp_spaceused N'Test'

INSERT INTO Test(ID, Name)  VALUES(1, 'a')

EXEC sp_spaceused N'Test'

DELETE FROM dbo.Test

EXEC sp_spaceused N'Test'

TRUNCATE TABLE dbo.Test

EXEC sp_spaceused N'Test'

DROP TABLE Test

输出:

name    rows    reserved    data    index_size  unused
Test    0       0 KB        0 KB    0 KB        0 KB
Test    1       16 KB       8 KB    8 KB        0 KB
Test    0       16 KB       8 KB    8 KB        0 KB
Test    0       0 KB        0 KB    0 KB        0 KB

您可以阅读:

https://dba.stackexchange.com/questions/9141/sql-server-sp-spaceused-gives-zero-rows-but-big-datasize-for-cleaned-table

答案 2 :(得分:0)

我希望最少有一页(8千字节)。它应该很容易to test。如果您的表包含LOB,则可能更多。

如果您想知道任何开销,您可能需要手动计算。创建一个数据库,禁用自动增长,填充它以使其满,尝试创建一个表(希望它失败),获取包括可用空间的数据库大小,然后启用自动增长,然后创建一个表,然后再次检查大小,包括可用空间

我希望两种情况下的答案都是:“我们不得不考虑将软盘作为潜在的存储介质来解决它。”也就是说,8千字节 ~64,000位,但是keep in mind how bits are stored