首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server数据库太大,因为可用空间分配了70%的mdf空间

Server数据库太大,因为可用空间分配了70%的mdf空间
EN

Database Administration用户
提问于 2020-12-13 15:07:03
回答 3查看 3.1K关注 0票数 0

我的数据库在磁盘上是825 GB,但是未分配的空间大约是500 GB (825 GB* 55%)。

在缩小中的数据库和文件之后,恢复.mdf文件的总大小没有任何改进。但是我观察到不可用空间增加到600 GB,.mdf文件的总大小仍然是825 GB (收缩前,我重建了用于全文索引搜索的表索引)。

是否有减少或回收未分配空间(可用空间)的方法或配置?

一些细节:

  • 恢复模式:简单
  • Server 2016 CU15
EN

回答 3

Database Administration用户

发布于 2020-12-14 09:52:58

您需要的是决定您是否有能力分配给这个数据库的空闲空间,或者您需要回收一些磁盘空间。

如果需要回收,则需要收缩mdf文件。你可以用小块来做,但要记住,它会导致碎裂。

如何收缩数据库文件:https://learn.microsoft.com/en-us/sql/relational-databases/databases/shrink-a-file?view=sql-server-ver15

以收缩数据或日志文件

连接到数据库引擎。在“标准”栏中,单击“新建查询”。

将以下示例复制并粘贴到“查询”窗口中,然后单击“执行”。此示例使用将UserDB数据库中名为UserDB的数据文件的大小缩小到7MB。

SQL

代码语言:javascript
复制
USE UserDB;
GO
DBCC SHRINKFILE (DataFile1, 7);
GO

数据文件收缩的最佳实践:https://littlekendra.com/2016/11/08/shrinking-sql-server-data-files-best-practices-and-why-it-sucks/

票数 0
EN

Database Administration用户

发布于 2020-12-14 10:19:21

我一直发现缩小的数据库对于它是否真正释放空间是非常不可预测的。在过去,我不得不一遍又一遍地做这件事,才能让它开始工作。

就像其他人说的,最好的方法是离开它,前提是空间最终需要被使用。

但是,如果确实需要缩小,那么布伦特·奥扎尔提出了一种方法,可以将数据移动到一个新文件,而不是旧的文件。这种方法需要一些空间开销,因为您需要调整新文件的大小。

票数 0
EN

Database Administration用户

发布于 2020-12-14 11:00:44

你的心理医生怎么样了?使用GUI?它默认为TRUNCATEONLY,这意味着它不会移动任何数据。也就是说,最后使用的页面将限制文件的大小。在您的示例中,似乎正在使用数据库文件中的最后一个区段。

您需要在没有TRUNCATEONLY的情况下这样做(因此它将数据移到文件的开头),并准备等待非常长的日志时间。

所以,考虑一下这是否值得。这是我很久以前写过的一篇文章:https://karaszi.com/why-you-want-to-be-restrictive-with-shrink-of-database-files

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/281455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档