1. 数据库的相关属性

在MS中创建数据库时会为数据库分配初始的大小(如下图:数据库和日志两个文件),随着数据库的使用文件会逐渐增大。数据库文件大小的增加有两种方式:

  • 自动增长:在自动增长中可以设置每次的增长量,以及最大增长的文件大小。
  • 手动增长:取消“启用自动增长”则为手动增长,这就需要DBA经常观测数据库的运行情况,及时更改数据库的小。手动增长比较麻烦,一般都设为自动增长。

2. 为何数据库需要收缩?

要明白为何数据库需要收缩,首先需要理解两个概念:

  • 为数据库分配的空间:如上图初始时为“数据库文件”分配的空间为3MB,为“日志文件”分配的空间未1MB。
  • 数据库实际使用的空间:以上图为例,由于数据是刚创建的,里面没有任何用户数据,因此它实际使用的空间很小(不足1MB)。

由此可以理解为:分配空间>=使用空间。在实际使用的过程中可能会出现分配空间为100MB,而使用空间仅为20MB,这就造成了磁盘有80MB的浪费,为了消除这种浪费就需要使用“数据收缩”功能。

3. 如何收缩数据库?

3.1 通过设置数据库选项AUTO_SHRINK为True,即让数据库自动收缩,如下图:

3.2 收缩数据库文件

右键数据库—任务—收缩—文件,如下图:

文件类型:选择所要收缩的是“数据库文件”还是“日志文件”。

当前分配的空间:数据库为该文件分配的大小,就是在磁盘上看到的文件大小。

可用空间:就是“当前分配的空间” 减去“实际使用的空间”。

收缩操作
   ① 释放未使用的空间:将该文件中未使用的空间释放出来,数据在文件中不移动;
   ② 在释放未使用的空间前重新组织页:此选项可以将文件收缩到“指定大小”,并将数据重新组织。其最小值为数据库“实际使用的空间”;
   ③ 通过将数据迁移到同一文件组的其他文件来清空文件:不解释,很少用。

上述操作也可以使用T-SQL替代

DBCC ShrinkFile(‘数据库名’,  targetsize);			/* 收缩数据库文件 */
DBCC ShrinkFile(‘数据库名_log’, targetsize); /* 收缩日志文件 */

Targetsize:单位为兆,必须为整数,DBCC SHRINKFILE 尝试将文件收缩到指定大小。

DBCC SHRINKFILE 不会将文件收缩到小于“实际使用的空间”大小,例如“分配空间”为10M,“实际使用空间”为6M,当制定targetsize为1时,则将该文件收缩到6M,不会将文件收缩到1M。

3.3 收缩数据库

即同时收缩“数据库文件”和“日志文件”,右键数据库—任务—收缩—数据库

收缩后的最大可用空间:设为0,即收缩所有的可用空间。

也可以使用T-SQL完成数据库的收缩

DBCC SHRINKDATABASE(数据库名,百分比)

百分比:即“收缩后文件中的最大可用空间”,取值范围“大于等于0, 小于100%”,实际使用中设为0即可。

-- select * from sys.sysfiles
go
alter database dbname set recovery simple --简单模式
go dbcc shrinkfile (n'dbname_log' , 11, truncateonly)
go
go
alter database dbname set recovery full --还原为完全模式
go

SQL Server 数据收缩的更多相关文章

  1. SQL Server无法收缩日志文件 2 因为逻辑日志文件的总数不能少于 2问题

    SQL Server无法收缩日志文件 2 因为逻辑日志文件的总数不能少于 2问题 最近服务器执行收缩日志文件大小的job老是报错 我所用的一个批量收缩日志脚本 USE [master] GO /*** ...

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

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

  3. SQL server数据缓存依赖

    SQL server数据缓存依赖有两种实现模式,轮询模式,通知模式. 1  轮询模式实现步骤 此模式需要SQL SERVER 7.0/2000/2005版本以上版本都支持        主要包含以下几 ...

  4. SQL Server 2008 收缩日志 清空删除大日志文件 转载

    SQL Server 2008 收缩日志 清空删除大日志文件 由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消:(SQL2005)Ba ...

  5. [SQL]SQL Server数据表的基础知识与增查删改

    SQL Server数据表的基础知识与增查删改 由张晨辉(学生) 于19天 前发表 | 阅读94次 一.常用数据类型 .整型:bigint.int.smallint.tinyint .小数:decim ...

  6. Sql Server数据的加密与解密

    Sql Server数据的加密与解密 在sql server中,我们如何为数据进行加密与解密,避免使用者窃取机密数据? 对于一些敏感数据,如密码.卡号,一般不能使用正常数值来存储.否则会有安全隐患.以 ...

  7. delphi 2010 导出sql server 数据到DBF乱码问题

    近日,由于业务需要导出sql server 数据到DBF文件,要查询多表记录,并适当处理后生成导出DBF文件,系统使用delphi2010平台开发. 首先按要求在VFP里创建DBF表,字段数有240个 ...

  8. SQL server数据库内置账户SA登录设置

    SQL server数据库内置账户SA登录不了   设置SQL Server数据库给sa设置密码的时候  提示18456 解决步骤:   第二步:右击sa,选择属性: 第三步:点击状态选项卡:勾选授予 ...

  9. SQL Server 复制 - 发布订阅(SQL Server 数据同步)

    原文:SQL Server 复制 - 发布订阅(SQL Server 数据同步) SQL Server的同步是通过SQL Server自带的复制工具来实现的,分发布和订阅2大步. A,复制-发布 发布 ...

随机推荐

  1. JavaWeb学习总结(一):基本概念

    一.基本概念 1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 静态web资源( ...

  2. ionCube 安装

    有些程序在php环境下运行需要安装ionCube Loader的扩展支持,得到如下提示 Site error: the ionCube PHP Loader needs to be installed ...

  3. php里单引和双引的用法区别和连接符(.)

    " "双引号里面的字段会经过编译器解释,然后再当作HTML代码输出. ' '单引号里面的不进行解释,直接输出. 例如: $abc='my name is tome'; echo $ ...

  4. 【HTML基础】<acronym>和<abbr>的区别

    缩写标签<acronym> <abbr>的区别 大家都知道HTML定义缩写有<acronym> <abbr>两种标签,但是经常分不清楚他们.这两个标签虽 ...

  5. mustache 模板,用于构造html页面内容

    Mustache 的模板语法很简单,就那么几个: {{data}} {{#data}} {{/data}} {{^data}} {{/data}} {{.}} {{<partials}} {{{ ...

  6. 购物车redis存储结构

  7. 用jsp实现网站登录界面的制作,并连接数据库

    课堂测试 任务需求: 撰写一篇博客 需要网站系统开发需要掌握的技术: 本次课堂测试的源程序代码: 运行结果截图: 说明课堂测试未按时完成的原因. 列出你对这门课的希望和自己的目标,并具体列出你计划每周 ...

  8. 4.Bootstrap基础总结

    一.Bootstrap 网格系统 二.Bootstrap 排版 三.Bootstrap 代码 四.Bootstrap 表格 五.Bootstrap 表单 六.Bootstrap 按钮 七.Bootst ...

  9. Scratch-Blockly配置过程

    原文地址:https://blog.csdn.net/litianquan/article/details/82735876 Scratch-Blockly配置过程 由于Blockly案例库开发项目需 ...

  10. 绘制虚线的UIView

    绘制虚线的UIView CAShapeLayer配合贝塞尔曲线可以绘制曲线,笔者继承了一个UIView的子类,并将该子类的backedLayer替换为CAShapeLayer,以此来实现绘制虚线的效果 ...