sql 2008 r2 如何快速收缩数据库,请大神搭救

yu328947390 2015-04-13 02:10:54
我目前有一个数据库,大小在850G左右,但我前几天对其中一些表进了页压缩,共压缩出空间400G左右,现在问题来了,空间确实从表里面压缩出来了,但它还占在数据库里面,我本打算用数据库自带的收缩功能去收缩数据库,但发现太慢了,收缩功能执行了几天都还没有丁点效果,请问哪位大神有快速收缩的方法,感激不尽。
...全文
1061 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yu328947390 2015-04-14
  • 打赏
  • 举报
回复
按楼上的意思,数据库多余的空间越多越好?
Tiger_Zhao 2015-04-14
  • 打赏
  • 举报
回复
既然在实时使用中,为什么要收缩?
尽量分配足够多的空间还来不及,居然要收缩,药不能停!
yu328947390 2015-04-14
  • 打赏
  • 举报
回复
上面几位说的方法我都有尝试过,因数据库的数据在时时更新,所以第二种方法暂时没法实现。

我现在试着一次收缩500M,可速度还是不尽人意,花费了将近半小时,相当于1G得要一小时,400G,,想死。
还在加载中灬 2015-04-14
  • 打赏
  • 举报
回复
收缩日志还可以,收缩数据库文件不可取 http://www.cnblogs.com/kerrycode/archive/2013/06/04/3116339.html
Mr_Nice 2015-04-14
  • 打赏
  • 举报
回复
引用 楼主 yu328947390 的回复:
我目前有一个数据库,大小在850G左右,但我前几天对其中一些表进了页压缩,共压缩出空间400G左右,现在问题来了,空间确实从表里面压缩出来了,但它还占在数据库里面,我本打算用数据库自带的收缩功能去收缩数据库,但发现太慢了,收缩功能执行了几天都还没有丁点效果,请问哪位大神有快速收缩的方法,感激不尽。
一致认为sql server是比较霸道的一个微软的孩子,有多少好处就拿多少,还不那么容易让他吐出来。 从另外一个角度,其实也比较能够接受sql server 在吃硬盘上的做法。一定程度上减少在一个存储单位上的硬盘交互,也是可以省些时间,跟提升性能的。 参考: 添加一个包括一个或多个文件的新文件组到数据库,重建索引时把数据导入到新的文件组。然后再收缩原来的文件。这个方法有几个优势: 1、避免了SHRINKFILE原文件时的碎片问题,因为没有用户数据需要移来移去,也没有碎片。 2、对原来的文件执行SHRINKFILE会快很多,因为没有用户数据需要移动。 3、因为你不需要re-index原来文件中的表,所以就不会再次增长其大小。 4、你可以在一个更小的,更易于管理的块中执行收缩,并且不会影响留在原来文件中的数据。 当然,你需要把新的文件组设置为默认文件组,否则你将会把新增的表和对象加进了旧的文件组。 因为很多理由(没有足够的磁盘空间给新文件组,堆表上没有索引,不便于管理等),这样做也许不大可能。 但是,这种做法是分离数据库中的用户数据和系统数据的最佳实践。
Tiger_Zhao 2015-04-14
  • 打赏
  • 举报
回复
至少要足够多。
否则自动增长的时候性能会下降。
数据库服务器你缩下来的空间留给谁用,还要不要性能了?
卖水果的net 2015-04-13
  • 打赏
  • 举报
回复
先更改到简单模式,再收缩,不过这个要小心。
Tiger_Zhao 2015-04-13
  • 打赏
  • 举报
回复
先把服务器断线(使得没有其它会话使用数据库),完整备份,删除旧数据库,删除 mdb、mdf 文件,新建空白数据库(一次性指定大小为400~500G),恢复数据库。
专注or全面 2015-04-13
  • 打赏
  • 举报
回复
每次少收缩一点,多收缩几次试试看?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧