我有一个非常大的只读数据库,有大约 30 个表。数据库的总大小约为 13 TB,最大的表约为 4.5 TB。(大约有 10 个大小为 1TB+ 的表,然后是几个较小的表。)目前,数据库被分成 8 个数据文件,都在 PRIMARY 文件组中。
我已经对一些大表应用了 PAGE 级数据压缩,这将 DB 的大小减少到 10TB 左右,但是,我真的很想回收磁盘上的一些空间。(这个数据集是只读的——它永远不会增长。)
我意识到缩小文件会导致大量碎片,这可以通过重建所有索引来解决,但重建索引可能会导致文件再次增长......啊!
这导致了我关于如何在压缩后回收磁盘空间的问题:
- 我唯一的解决方案是将所有表/数据复制到具有较小文件的新文件组中,删除原始表,然后清空/删除或缩小原始文件吗?
- 是否有人知道任何脚本或工具可以帮助我确定所需的最佳文件大小?
- 最好的做法是
- 使用聚集索引 + PAGE 压缩在新文件组上创建新表
- 从原始表中插入/选择到新表中(使用 TF 610 和 tabblock)
- 删除原始表
- 在新文件组上创建非聚集索引
这似乎是一项艰巨的任务,需要很长时间,因为我将不得不基本上重新创建我的整个数据库......再次。我缺少一个更简单的解决方案吗?