Ala*_*sen 3 sql-server partitioning file filegroup
我正在尝试在 SQL 中对一个大表进行分区。它的大小为 15 TB,包含数百万条记录。主要思想是通过创建新的文件组将即将到来的数据保存到不同的磁盘上,其中当前磁盘无法再扩展。
我创建了所需的文件组、文件、分区架构和分区函数,但是当我创建聚集索引时,它占用了太多空间(超过 200GB)并且仍在运行,所以我停止了它。
我的问题:有没有一种方法可以对现有的大表进行分区,而无需创建占用太多空间的聚集索引?或者有没有办法将新的数据保存到不同的磁盘?
为了避免创建 15TB 索引(当然,您可以在新磁盘上的新文件组上创建)的痛苦,您可以创建一个新的分区表(或者不分区,如果您不需要管理/归档) / 清除旧数据)从头开始,开始在那里写入所有新的传入数据,然后慢慢地移动数据。
借用我自己的答案:
union all两个表的视图(可能最简单的方法是重命名当前表并临时用具有旧表名称的视图替换它)delete top (@batchsize) output deleted.* into new_table from old_table
union all(或删除它并重命名新表)如果需要两周时间才能将所有旧数据回填到新分区方案中,那又怎样?用户不需要等待两周;他们只等待任何单个批次(即使如此,这很大程度上只是人们查询正在移动的数据,而不是新数据)。
| 归档时间: |
|
| 查看次数: |
2193 次 |
| 最近记录: |