我有一个低于自然的生产服务器:
版本: Microsoft SQL Server 2014 - 12.0.4100.1
情况:
每天生成一个新表来跟踪多个事件,比如事件A,B和C.
我们每天都会从超过1个月的表中删除事件A.
基本上,根据(total_pages - used_pages),事件A的大小会基于事件A的大小声明一个未使用的空间,我想好好利用这个空间,而不是像那样浪费。
当前解决方案:
目前,我们的解决方案是在每次“清洁”后立即重建表格。
所以每个表只会使用它应该的大小,同时将大小释放到数据库,称为“未分配的空间”(请在此时纠正我,如果我错了),使用存储过程“exec sp_spaceused”。 / p>
问题:
我的问题出现了,基于我从网上学到的东西的假设是,未分配的空间是硬盘上已经声明的空间,但尚未分配给任何对象,因此我相信每个新的表创建,它使用未分配的空间,而不是声称更多的硬盘空间。
但这是几天发生的事情:
9月5日,sp_spaceused返回:
database_size:447053.75 MB,未分配的空间:58268.34 MB
9月6日,sp_spaceused返回:
database_size:450773.50 MB,未分配空间:57360.52 MB
由于我还有58GB的未分配空间,为什么sql server需要另外3GB的HD空间,而只使用1GB的未分配空间?
感谢您提前协助。
答案 0 :(得分:0)
公式很简单:
database_size = reserved + unallocated space + log space