没有人想简单地删除记录,所以我和我的同事讨论了附加"删除"是否会更好。 flag(数据类型bit
),或创建表的副本并移动"删除"记录到副本中。
因为我们期望删除操作数量较少p.a.但是我们的数据中有大量的记录,简单的位可能会增长很多,这就是我们讨论重复表的原因。
因此问题:空表在SQL Server 2008 R2中使用了多少空间?
答案 0 :(得分:2)
查看表在SQL Server数据库中使用的空间:
以下是显示数据库中所有表的元数据的屏幕截图。
答案 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
您可以阅读:
答案 2 :(得分:0)
我希望最少有一页(8千字节)。它应该很容易to test。如果您的表包含LOB,则可能更多。
如果您想知道任何开销,您可能需要手动计算。创建一个数据库,禁用自动增长,填充它以使其满,尝试创建一个表(希望它失败),获取包括可用空间的数据库大小,然后启用自动增长,然后创建一个表,然后再次检查大小,包括可用空间
我希望两种情况下的答案都是:“我们不得不考虑将软盘作为潜在的存储介质来解决它。”也就是说,8千字节 ~64,000位,但是keep in mind how bits are stored。