视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
userdatabase的initialsize和dbccshrinkfile
2020-11-09 10:20:48 责编:小采
文档

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

下载本文
显示全文
专题