在 Microsoft SQL Server 2008 R2 中,空 table 使用了多少 space?

How much space does an empty table use in Microsoft SQL Server 2008 R2?

没有人想简单地删除记录,所以我和我的同事讨论了是附加一个 "deleted" 标志(数据类型 bit)还是创建 [=] 的副本更好25=] 并将 "deleted" 条记录移动到副本中。

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

因此出现问题:table 在 SQL Server 2008 R2 中使用了多少 space?

要查看 space table 在 SQL 服务器数据库中使用了多少:

  • 在 SQL Server Management Studio 中,select 来自对象资源管理器的 table,并从 对象资源管理器详细信息 查看 菜单。 (关键字快捷键:F7

这是显示数据库中所有 table 的元数据的屏幕截图。

我希望至少有一页(8 KB)。应该很简单 to test。如果您的 table 包含 LOB,则可能更多。

如果您想了解任何开销,您可能需要手动计算。创建一个数据库,禁用自动增长,将其填满,尝试创建一个 table(希望它失败),获取包括空闲 space 在内的数据库大小,然后启用自动增长,然后创建一个 table,然后再次检查大小,包括免费 space.

我希望这两种情况的答案都是,"So little that we'd have to be considering floppy disk as a potential storage medium for it to matter." 也就是说,8 KB ~64,000 位,但是 keep in mind how bits are stored.

当您创建 table 时,它将是零长度。 当您从 table 中删除时,它不会释放所有使用的 space。 当您截断 table 时,它将释放所有使用的 space.

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