我正在维护一个SQL Server 2005数据库,它承载了大约2.9Tb的数据(2x1.45Tb--我有一个原始模式和一个分析模式,因此基本上包含了两个数据副本)。恢复模型简单,.ldf为6Gb。
无论出于什么原因,.mdf都是7.5Tb。现在,分析表中可能只有2-3个额外列,而在我看来(可能错误地理解了--如果我错了请纠正我)的NVARCHAR(MAX)列不多,它们可能会导致额外的空间分配。这是在刚刚缩小数据库之后--在那之前,它是9Tb。有什么想法吗?
另外,如果您还有其他问题,请告诉我--我对数据库管理和优化工作非常陌生(我通常不做这方面的工作:)。
非常感谢!
安德里亚
发布于 2013-08-21 13:22:15
尝试在数据库上运行sp_spaceused。作为一个例子,它返回:
reserved data index_size unused
------------------ ------------------ ------------------ ------------------
6032 KB 2624 KB 1664 KB 1744 KB要在数据库上运行它,只需USE数据库,然后运行sp_spaceused。
如果它仍然显示出大量未使用的空间,您可以再次尝试收缩。有时我确实会发现这需要多次尝试。此外,有时我发现缩小单个文件而不是整个数据库效果最好。但是,您可能会发现,您有2.9Tb的数据和另一个索引的4+Tb,在这种情况下,7.5TB是相当合理的。如果您想了解每个表的空间大小(数据和索引),那么您也可以在表级别上运行sp_spaceused。可以使用以下命令在数据库中的所有表中运行它:
EXEC sp_msforeachtable 'EXEC sp_spaceused [?];'尽管公平的警告sp_msforeachtable是没有文档的,不受支持的,并且已经知道错过了表。另一方面,我自己也有相当多的运气。
所有这一切,您的数据库应该有一定比例的空闲空间,这取决于您的预期增长。基本上,你想要确保你有空间为任何地方从6个月到几年的增长价值。此外,您还需要检查您的autogrowth设置,以确保它们适合您的情况。特别是考虑到数据库的大小,您不希望使用% autogrowth。
发布于 2018-10-05 16:44:31
使用,1.右键单击数据库,然后单击2.单击任务->收缩->文件
您将看到一个对话框,显示: a.当前分配的空间b.可用的空闲空间+(%空闲)
如果您的%空闲超过50%,您可以考虑缩小文件。我已经看到这一打击高达90%。如果我决定缩小文件,我通常会将其设置为比当前分配的空间多2或3G。我的大部分数据库都不到50G。因此,如果您有一个更大的文件,那么您可能会使它10吉大。如果我要将数据库移动到另一台服务器,我通常只担心收缩,您可以在任何sql页面上阅读所有关于收缩问题的内容。
https://dba.stackexchange.com/questions/48462
复制相似问题