SQL Server 2014如何使用磁盘空间来存储数据

时间:2016-04-28 04:50:14

标签: sql sql-server sql-server-2014

我想检查sql server如何消耗磁盘空间来存储数据。我最近只丢了一张大约100GB的表,硬盘仍然保持不变(在丢弃大小为30GB之前,丢弃操作后,大小应该达到130GB)。从web检查后,注意到SQL Server没有自动处理,为了获得SQL Server发布硬盘块,需要进行收缩操作。如果我错了,请纠正我。

现在我的问题是在我删除了30GB的数据后,SQL Server会将其反转以备将来使用,这意味着SQL Server将使用此保留块来处理任何新数据,而不是来自操作系统的请求块。如果我错了,请纠正我。

这里是我从数据库获得的信息,如果我理解正确的话,SQL Server为这个数据文件保留了大约308GB,我们已经使用了大约196GB。因此,任何新数据都会出现在这个数据文件中,SQL Server将使用保留块直到达到308GB,然后从操作系统请求额外的块。我对吗 ?

enter image description here

 ;with db_file_cte as
 (
select
    name,
    type_desc,
    physical_name,
    size_mb = 
        convert(decimal(11, 2), size * 8.0 / 1024),
    space_used_mb = 
        convert(decimal(11, 2), fileproperty(name, 'spaceused') * 8.0 / 1024)
from sys.database_files
 )   select
name,
type_desc,
physical_name,
size_mb,
space_used_mb,
space_used_percent = 
    case size_mb
        when 0 then 0
        else convert(decimal(5, 2), space_used_mb / size_mb * 100)
    end
 from db_file_cte;

1 个答案:

答案 0 :(得分:1)

  

如果我理解正确,SQL Server保留约308GB   这个数据文件,我们已经使用了大约196GB。所以任何新数据都来了   对于这个数据文件,SQL Server将使用保留块直到它命中   大小308GB然后它从OS请求额外的块。我是对的吗?

是的,你是对的。 SQL Server数据库由磁盘上的文件组成。默认情况下,释放数据库中的空间不会更改文件的大小。

但是,您可能需要验证各个文件的自动增长设置。运行“sp_helpfile”并检查结果集中的maxsize和growth列。

如有必要,您可以缩小数据库(或特定文件)以释放未使用的磁盘空间。 (您也可以将数据库设置为自动缩小,但不建议这样做。)但出于性能原因,通常建议在数据库中留出大量可用空间。数据越不稳定,可用空间就越大。