Pரத*_*ீப் 4 sql-server shrink database-size datafile
我们有一个 120GB 的数据库。有一个包含 60GB 数据的表,这是无用的,我们已经截断了它。
现在数据库大小为 120GB,可用空间为 60GB。数据库至少在 3 个月内不会增长到 60GB。所以我们可以缩小数据文件。
我知道碎片问题。我可以重建我的索引,因为我们的不是 24*7 的数据库。
请建议缩小MDF
文件
您究竟想通过缩小数据库来实现什么?您应该为数据库增长做好计划并为此增长预留空间。
那么,您为什么不保持原样,为进入您的数据库的新数据分配空间。
已经讨论了很多次,以至于您不想缩小数据库。检查一下并在缩小之前三思而后行:
停止缩小您的数据库文件。严重地。现在。布伦特·奥扎尔
请阅读我关于如何缩小数据库的帖子,我将在此处进行总结:
查看文件组中所有文件的大小。您希望组中的所有文件大小均匀,并希望为增长、索引维护等留出空间。 将数据库保留得过大比将其缩小至过小更有意义. 就我个人而言,我认为我的目标规模至少要增长 6 个月。
SELECT
LogicalName = dbf.name
,FileType = dbf.type_desc
,FilegroupName = fg.name
,PhysicalFileLocation = dbf.physical_name
,FileSizeMB = CONVERT(DECIMAL(10,2),dbf.size/128.0)
,UsedSpaceMB = CONVERT(DECIMAL(10,2),dbf.size/128.0 - ((dbf.size/128.0)
- CAST(FILEPROPERTY(dbf.name, 'SPACEUSED') AS INT) /128.0))
,FreeSpaceMB = CONVERT(DECIMAL(10,2),dbf.size/128.0
- CAST(FILEPROPERTY(dbf.name, 'SPACEUSED') AS INT)/128.0)
FROM sys.database_files dbf
LEFT JOIN sys.filegroups fg ON dbf.data_space_id = fg.data_space_id
ORDER BY dbf.type DESC, dbf.name;
Run Code Online (Sandbox Code Playgroud)
听起来您已经这样做了,并且可以在收缩后执行索引维护。确保在维护窗口期间计划足够的时间来缩小和执行索引维护。使用维护窗口迁移到新数据库或将所有索引重建到新文件组中,而不是缩小现有文件组,可能会更快、更容易。
始终使用SHRINKFILE
,从不使用SHRINKDATABASE
。使用您在步骤 1 中确定的信息来构建您的SHRINKFILE
语句。
USE [DatabaseName];
DBCC SHRINKFILE(LogicalName, TargetSize);
Run Code Online (Sandbox Code Playgroud)
如果您有定期维护工作,只需开始这项工作并让它完成它就很神奇。这将需要比平时更长的时间,因为一切都将真正支离破碎。您将生成比平时更多的事务日志,因此您将拥有更大的事务日志备份,并且您还将看到任何日志传送、可用性组、镜像等方面的影响。
归档时间: |
|
查看次数: |
4871 次 |
最近记录: |