Home  >  Article  >  Database  >  user database的initial size和dbcc shrinkfile

user database的initial size和dbcc shrinkfile

WBOY
WBOYOriginal
2016-06-07 17:38:421342browse

user database的initial size和dbcc shrinkfile 之前我们讨论了dbcc shrinkfile改变tempdb initial size的情况。而用DBCC Shrinkfile去收缩一个user database,情况就比较简单了。让我们通过一些测试来说明SQL Server 收缩user database的行为。 首先创建了

user database的initial size和dbcc shrinkfile

之前我们讨论了dbcc shrinkfile改变tempdb initial size的情况。而用DBCC Shrinkfile去收缩一个user database,情况就比较简单了。让我们通过一些测试来说明SQL Server 收缩user database的行为。

首先创建了一个数据库,Sales_data的初始大小为3mb。 对于当前这个数据库文件来说,它的initial size为3mb。

ON

SIZE = 3,

FILEGROWTH = 1 )

LOG ON

SIZE = 5MB

) ;

现在我们插入一些10mb数据:

,sys.columns c2

Sales_data大小变成了13mb的左右,然后执行dbcc shrinkfile来收缩数据文件,注意这里我们没有指定要收缩到的target size:

我发现sales_data的大小变成了3mb。

结论:当数据库实际使用的空间小于Minimum size时,在不指定 target size的情况下,dbcc shrinkfile可以将文件收缩到Minimum Size。(实际上在这个测试中的MinimumSize就是我们数据库的initial size。)

那么我们来看看dbcc shrinkfile能否改变user database的Minimum size? 继续下一个实验。

执行下面的脚本,先将数据库从3M变为13MB,然后使用dbcc shrink并指定target size为10MB。

收缩之后sales_dat变成了11mb,但Minimumsize仍然是之前的3mb。 那么是否说明dbcc shrinkfile无法改变user database的Minimum size? ? ?

继续进行试验:现在我们给dbcc shrinkfile命令指定target size为1MB。

试验结果是,,数据库的当前大小变为1.3mb, 而且MinimumSize也变成1.3mb。

我们再次插入数据扩张数据库大小,之后再次使用dbcc shrinkfile收缩(不指定target size)。

如我们所料,这次数据库就被收缩到了1.3mb。

结论:如果数据库收缩后的大小仍然大于minimum size,那么minimum size不会改变。 如果收缩后数据大小小于当前的minimum size,那么minimum size变更为当前大小。

虽然dbcc shrinkfile可以返回minimumsize但是使用这种办法来查看minimum size显然不是个好主意。还有其他方法查看Minimum size吗

答案是肯定的

可以通过dbccfileheader得到文件的Minimum size, 请参考MinSize列。

Minimum size的值实际存储在数据文件的第0页中,所以我们通过dbcc page也能查看到

posted on

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn