【发布时间】:2016-12-07 06:08:52
【问题描述】:
我有一个大约是 SQL Server 2014 数据库转储。 60GB 大。在 SQL Server Management Studio 中,原始数据库显示“ROWS 数据”的初始大小约为 99000MB,“LOG”的初始大小约为 25600MB。
现在数据库中有一个大约 10GB 大的视图表,我可以对其进行刷新/清理。
删除这些表中的数据后,减小数据库物理大小的最佳方法是什么?我发现很多帖子都在处理 SHRINKDATABASE,但由于碎片和性能不好,有些文章不推荐它。
提前致谢。
【问题讨论】:
-
您是否有特定的原因要缩小它?因为即使你缩小它,它也会再次开始变大。此外,那些不这样做的建议是正确的。如果缩小数据库,可能会损害 SQL 性能。
-
是的,我们需要让它尽可能小,因为我们需要共享它,并且我们可以删除的表中的数据总共约为 40GB。所以潜力很大。
-
人们不推荐 SHRINK 的原因是它不是处理在生产环境中运行的数据库的“正确”策略。如果您需要部署版本测试或开发或与其他开发人员共享它或类似的东西 - 我看不出您担心缩小的理由。因此,取决于您实际想要实现的目标 - 缩小可能是可行的。除非您确定自己在做什么,否则不要在生产版本上执行此操作。 (这些年来我缩减了很多数据库——不是我的第一选择,但很好——它是盒子里的一个工具)
-
将这些表放入单独的 FILEGROUP 甚至单独的数据库中。如果需要,只缩小那个数据库/文件。 LOG 的情况也不清楚:它是否处于完全恢复模式?您是否在进行 DB 和/或 LOG 备份?
-
原始数据库处于完全恢复模式,所以我猜我得到的数据库转储是相同的。由于原始数据库总和〜130GB而转储只有60GB,有没有办法减少初始大小?当我想将一个 60GB 的数据库导入到一个 100GB 的文件系统时,我收到一个错误,提示系统需要 130GB 可用空间才能导入转储。
标签: sql-server sql-server-2014