• 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

  • 相关阅读:
    深入理解Node.js垃圾回收与内存管理
    【File System】Node.js中文件操作模块File System
    【事件流】事件冒泡和事件捕获
    undefined 和null的区别?
    localStorage实现登录注册功能
    解刨for循环
    react中嵌入高德地图并Marker标点
    react页面中嵌入地图,标识出某个地点,使用插件react-amap
    react中使用antd的List组件,以及下载文件,List隔行变色
    公众号页面数据处理
  • 原文地址:https://www.cnblogs.com/mq0036/p/14262806.html
Copyright © 2020-2023  润新知