zoukankan      html  css  js  c++  java
  • SQL Server -- 数据收缩详解

    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即可。

    出处:https://www.cnblogs.com/rainman/p/3470220.html

    ======================================================================================

    sql数据库收缩有几种方法

    --1用dbcc命令,带不同的bai参数测试
    --1.1收缩指定数据库中的数据文du件和日志zhi文dao件的大小
    DBCC SHRINKDATABASE ( test )
    DBCC SHRINKDATABASE ( test,TRUNCATEONLY )
    DBCC SHRINKDATABASE ( test,NOTRUNCATE )
    DBCC SHRINKDATABASE ( test ) WITH NO_INFOMSGS
        
    --1.2收缩当前数据库的指定数据或日志文件的大小,
    DBCC SHRINKFILE (Test)
    DBCC SHRINKFILE (Test_log)
    DBCC SHRINKFILE (Test_log,EMPTYFILE)
    DBCC SHRINKFILE (Test_log,TRUNCATEONLY) WITH NO_INFOMSGS
    --2.用企业管理器
    --选中数据库->右键->任务->数据库/文件->确定

    原文链接: https://zhidao.baidu.com/question/1990256690556551547.html

    收缩数据库日志文件

    首先打开你要收缩的数据库点击右键属性——点击选项——在恢复模式中选择简单——点击确定;然后重新右键点击数据库——选择任务——选择收缩——选择文件——在文件类型中选择日志——在收缩操作中选择在释放未使用的空间前重新组织页——将文件收缩到你想要的大小——点击确定。

    原文链接: https://blog.51cto.com/chengfei/427481

    ======================================================================================

    SQL2008R2数据库日志太大收缩方法

    1.登陆项目平台数据库服务器。双击SQL Server Management Studio打开数据库管理。登陆数据库

    clip_image004

    2.如下图,打开数据库属性窗口

    clip_image006

    3.如下图,更改数据库恢复模式

    clip_image010

    4.如下图,收缩数据库日志

    clip_image012

    clip_image014

    到这里已经完成了,数据库的日志收缩

    5.如下图,数据库恢复模式修改为完整

    clip_image016


    __EOF__

    出处:https://www.cnblogs.com/airoot/p/7851849.html

  • 相关阅读:
    Neko's loop HDU-6444(网络赛1007)
    Parameters
    SETLOCAL
    RD / RMDIR Command
    devenv 命令用法
    Cannot determine the location of the VS Common Tools folder.
    'DEVENV' is not recognized as an internal or external command,
    How to change Visual Studio default environment setting
    error signing assembly unknown error
    What is the Xcopy Command?:
  • 原文地址:https://www.cnblogs.com/mq0036/p/14262806.html
Copyright © 2011-2022 走看看