我有一个生产SQL Server 2008,其中8 TB遍布多个数据库。 我已经删除了大约85%的数据,并且必须恢复磁盘空间。 所有USED_SPACE的最终总和为1.2 TB。提高SQL Server DBCC SHRINKFILE的性能
此SHRINKFILE
过程必须适合每个数据库7小时的维护时段。
但是每个人的DBCC SHRINKFILE
需要MANY几个小时才能运行。例如,将800 GB数据库缩小至120 GB需要15个小时以上。
不幸的是,超过了我的维护窗口,我不得不杀死这个进程,希望数据库不会被破坏(后面的DBCC CHECKDB
显示它们很好)。
我可以看到DBCC SHRINKFILE
没有充分利用可用的磁盘I/O和CPU资源。
例如,可以在几个小时内将完整大小的数据库文件从一个磁盘复制到另一个磁盘,但SHRINKFILE
过程需要相当长的时间。
注意:数据库全部设置为SIMPLE
恢复模式并且AUTO_SHRINK
已关闭。
是的,我看到很多人说永远不会这样做,因为它破坏索引 - 我打算在SHRINKFILE
完成时重建索引。
有没有办法提高SHRINKFILE
命令或其他解决方案的优先级?以下是我正在考虑的一些选项:
- SET DEADLOCK_PRIORITY HIGH在运行SHRINKFILE之前的同一会话中。 (但我怀疑这会有帮助。)
- 创建一个新的数据库并逐个复制所有数据。
请帮忙。
这实际上与**编程**(其中*本站*全部是关于**)没有任何关系,但是使用数据库管理 - 因此它在这里是脱离主题并属于[dba。 stackexchange.com](http://dba.stackexchange.com) - 投票移动。 –
你说得对。有没有办法移动它 - 或者我应该在那里创建一个新的? – Don
系统将迁移它,一旦共有五张选票迁移它 –