user database的initial size和dbcc shrinkfile

时间:2022-09-08 19:13:57

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

 

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

CREATE
DATABASE
Sales

ON

(
NAME
=
Sales_dat,

FILENAME
=
'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008RTM\MSSQL\DATA\saledat.mdf',

SIZE
= 3,

FILEGROWTH
= 1 )

LOG
ON

(
NAME
=
Sales_log,

FILENAME
=
'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008RTM\MSSQL\DATA\salelog.ldf',

SIZE
= 5MB

)
;

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

select
top 1280 REPLICATE('a',8000)as
x
into
a
from
sys.columns
c1 ,sys.columns
c2

 

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

user database的initial size和dbcc shrinkfile

我发现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。

user database的initial size和dbcc shrinkfile

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

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

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

 

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

user database的initial size和dbcc shrinkfile

 

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

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

 

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

答案是肯定的:

可以通过dbcc
fileheader得到文件的Minimum size, 请参考MinSize列。user database的initial size和dbcc shrinkfile

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

user database的initial size和dbcc shrinkfile

 

 

user database的initial size和dbcc shrinkfile的更多相关文章

  1. Tempdb initial size和dbcc shrinkfile

    在使用sql server时您可能遇到过下面的情况,tempdb的数据文件初始大小为3mb, 随着对tempdb的使用,tempdb文件逐渐变得很大(例如30GB),导致了磁盘空间不足. 此时您需要立 ...

  2. 收缩数据库 DBCC SHRINKFILE

    /* from: http://www.cnblogs.com/blackcore/archive/2010/12/27/1917911.html */ 数据库中的每个文件都可以通过删除未使用的页的方 ...

  3. DBCC SHRINKFILE收缩日志/收缩数据库/收缩文件

    DBCC SHRINKFILE 收缩相关数据库的指定数据文件或日志文件大小. 语法 DBCC SHRINKFILE    ( { file_name | file_id }        { [ ,t ...

  4. SQL Server 2008收缩日志文件--dbcc shrinkfile参数说明

    原文:SQL Server 2008收缩日志文件--dbcc shrinkfile参数说明 DBCC SHRINKFILE 收缩相关数据库的指定数据文件或日志文件大小. 语法 DBCC SHRINKF ...

  5. SQL Server dbcc shrinkfile 不起作用

    方法 1.重建聚集索引. 方法 2.重建堆表. ---------------------------------------------------------------------------- ...

  6. 笔记9-徐 DBCC SHRINKFILE不起作用的原因

    1 , , , , , , , , ,40) ,1 page_id pg_alloc ext_size obj_id index_id partition_number partition_id ia ...

  7. SQLSERVER将一个文件组的数据移动到另一个文件组

    SQLSERVER将一个文件组的数据移动到另一个文件组 有经验的大侠可以直接忽视这篇文章~ 这个问题有经验的人都知道怎麽做,因为我们公司的数据量不大没有这个需求,也不知道怎麽做实验 今天求助了QQ群里 ...

  8. SQLSERVER 2012 收缩日志

    select log_reuse_wait_desc from sys.databases where name='tfs_CARDLANWEB' backup log tfs_CARDLANWEB ...

  9. SQLSERVER常用脚本整理

    数据库存储空间查询(数据库的大小及数据库中各个表的数据量和每行记录大小) IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = Object_i ...

随机推荐

  1. 技术那么多,你想看看JSON Schema的测试吗?

    目录 1. 什么是JSON Schema? 2. 如何定义一个JSON Schema 3. 如何测试JSON Schema a) 使用JSON Schema validator GUI b) 在Jav ...

  2. 在Java中直接调用js代码

    JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Java中直接调用js代码 不能调用浏览器中定义的js函数,会抛出异常提示ReferenceError: “alert ...

  3. ActiveMQ之MessageListener

    消息的消费者接收消息可以采用两种方式: 1.consumer.receive()或 consumer.receive(int timeout); 2.注册一个MessageListener. 采用第一 ...

  4. hibernate自动建表采用UTF-8字符编码

    hibernate自动建表采用UTF-8字符编码 hibernate建表默认为UTF-8编码 >>>>>>>>>>>>>& ...

  5. nested query for "pat2" table

    mysql> select t.appln_id, t.filing_date, t.appln_kind, t.people, GROUP_CONCAT(pu.publn_kind) from ...

  6. 01_ExtJS_HelloWorld

    1, 什么是Ext? Ext是一个Ajax框架,用于在客户端创建丰富多彩的web应用程序界面,是在Yahoo! UI的基础上发展而来的.官方网址:http://www.extjs.com/ 现在改为: ...

  7. pybind11 安装

    Prerequisites: $ sudo apt-get install python-dev  (or python3-dev) $ sudo apt-get install cmake $ su ...

  8. Solve Docker for Windows error: docker detected, A firewall is blocking file Sharing between Windows and the containers

    被这个“分享硬盘”问题烦了我好几个小时,终于在一个叫Marco Mansi外国人博客上找到解决方法了,真的很无奈 https://blog.olandese.nl/2017/05/03/solve-d ...

  9. ABP框架

    https://aspnetboilerplate.com/ https://aspnetboilerplate.com/Pages/Documents http://www.cnblogs.com/ ...

  10. MT【24】一道五次方程的求根题

    解答: 评:一般的五次及以上的多项式方程是无根式解的,只能用计算机去精确到某某位.但是特殊的比如$x^5=1$显然有根式解,本题就是一个不平凡的特殊的例子,这里的代换用于求解三次方程的求根过程是一样的 ...