sqlserver数据库清理(收缩文件)

在我们日常适用数据库时只要有增删改查的操作就会被记录到SQL server的日志中,随着时间的推移日志文件会越来越大,如果不定期处理可能会撑满磁盘导致一些不可想象的后果。在加上我们业务系统中的数据及业务日志每天都在产生,磁盘占用也会越来越高,那么有没有什么方案来清理一下数据库来做个瘦身呢?接下来一起看一下sqlserver中收缩功能

官方文档介绍

官方文档地址: 收缩文件
官方是这样解释的:收缩数据文件通过将数据页从文件末尾移动到更靠近文件开头的未占用的空间来恢复空间。 在文件末尾创建足够的可用空间后,可以取消对文件末尾的数据页的分配并将它们返回给文件系统。

在执行会产生大量未用存储空间的操作(如大型 DELETE 语句、截断表或删除表操作)后,执行收缩操作最有效。
大多数数据库都需要一些可用空间,以供常规日常操作使用。 如果反复收缩数据库文件并注意到数据库大小再次变大,则表明常规操作需要可用空间。 在这种情况下,反复收缩数据库文件是一种无谓的操作。 增加数据库文件所需的自动增长事件会影响性能。
被移动用来收缩文件的数据可以分布到文件的任何可用位置。 这将导致索引碎片并使搜索索引范围的查询变慢。 若要消除碎片,请考虑在收缩后重新生成文件的索引。

除非有特定要求,否则不要将 AUTO_SHRINK 数据库选项设置为 ON。

分析

我们在创建数据库时会为数据库分配初始的大小,随着数据库的使用文件会逐渐增大。数据库文件大小的增加有两种方式:1.自动 2.手动

如图所示初始时为“数据库”分配的空间为8MB,为“日志”分配的空间为8MB。
以此图为例,由于数据库是刚创建的,里面没有任何数据,因此它实际使用的空间很小可能还为达到8MB。
根据分析我们可以得出:分配空间大于使用空间。在实际使用的过程中可能会出现分配空间为80MB,而使用空间仅为20MB,这就造成了磁盘有60MB的浪费,为了消除这种浪费就需要使用“收缩”功能。

在这里插入图片描述

实操

1.我们可以在创建数据后设置数据库自动进行收缩

选中数据库右键——属性——选项——找到自动收缩(默认是关闭的)
在这里插入图片描述

2.如果已经产生大量数据,那么我们可以先进行改变数据库的恢复模式为"简单"

在这里插入图片描述
再去选择数据库右键——任务——收缩
在这里有两个选项一个是数据库一个是文件
数据库:针对整体数据库包含 数据、日志进行收缩
文件:可自行选择对数据或日志进行收缩

在这里插入图片描述

①数据库

如果勾选了“在释放未适用的空间前重新组织文件。选中此选项可能会影响性能®”,那么数据库将文件收缩到“指定大小”,并将数据重新组织。
如果不勾选 那么将该文件中未使用的空间释放出来,数据在文件中不移动
建议不勾选

在这里插入图片描述

点击确定后会被收缩,磁盘占用就会变小

②文件

文件类型:选择所要收缩的是“数据库文件”还是“日志文件”。
当前分配的空间:数据库为该文件分配的大小,就是在磁盘上看到的文件大小。
可用空间:就是“当前分配的空间” 减去“实际使用的空间”。
收缩操作:
释放未使用的空间:将该文件中未使用的空间释放出来,数据在文件中不移动;
在释放未使用的空间前重新组织页:此选项可以将文件收缩到“指定大小”,并将数据重新组织。其最小值为数据库“实际使用的空间”;
通过将数据迁移到同一文件组的其他文件来清空文件:几乎不用。
在这里插入图片描述

至此结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香煎三文鱼

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值