2

我有一个 SQL Server 2008 R2 数据库,它有许多表。其中两张表包含大量数据..主要是因为其中一张是VARBINARY(MAX)和姐妹表是GEOGRAPHY。(为什么是两张桌子?如果您有兴趣,请阅读下文***)

这些表中的数据是地理空间形状,例如邮政编码边界。

现在,前 70K 奇数行用于DataType = 1 其余 500 万行用于DataType = 2

现在,是否可以将表数据拆分为两个文件?所以所有的行都DataType != 2进入File_ADataType = 2进入File_B

这样,当我备份数据库时,我可以跳过添加 File_B 以便我的下载更小?这可能吗?


我猜你可能在想 -> 为什么不把它们作为两张额外的桌子?主要是因为在代码中,数据在概念上是相同的..只是碰巧我想拆分这个模型数据的存储。如果我现在如何在我的模型中聚合两个而不是一个,那真的会弄乱我的模型。

***Entity Framework 不喜欢带有 的表GEOGRAPHY,所以我必须创建一个将转换为的新表GEOGRAPHYVARBINARY然后将其放入 EF。

4

2 回答 2

3

这有点矫枉过正,但您可以使用表分区来执行此操作,因为每个分区都可以映射到不同的文件组。一些警告:

  • 表分区仅在企业(和开发人员)版中可用
  • 与聚簇索引一样,您只能获得一个,因此请确保这是您想要对表进行分区的方式
  • 我不确定这对“选择性备份”或者更重要的是部分恢复的效果如何。在使用此工具进行生产之前,您需要测试很多奇怪的恢复场景

一种老式的方法是设置分区视图。这为您提供了两个表,确实如此,但分区视图“结构”非常可靠且相当优雅,您不必担心将数据拆分到多个备份文件中。

于 2011-01-12T23:48:40.507 回答
0

我认为您可能想研究数据分区。您可以根据键值(例如 DataType 列)将数据划分为多个文件组,进而划分为多个文件。

数据分区也有助于提高性能。因此,如果您也需要,您也可以查看索引的分区方案。

于 2011-01-12T23:48:21.837 回答