我们有一个稍微重的表,它半频繁地(每约 5 分钟)由一个过程重新创建。我想知道是否可以做些什么来最大程度地减少表重建期间的停机时间,并且到目前为止已经想到了两种可能性(让我们称表为“设备”):
选项 A
1) 在过程中创建新表,将其Device_new
命名 2) 将旧表重命名Device
为Device_old
3) 将新表重命名Device_new
为Device
选项 B
与选项 A 相同,只是使用分区切换。
警告:分区切换的设置要复杂得多,并且对使用有相当严格的要求。
这些选项是糟糕的解决方案吗?如果是,您将如何解决这个用例?谢谢你。
您提到分区切换更复杂,但是当表未分区时情况并非如此。可以使用
SWITCH
将一个非分区表的全部内容高效地替换为另一个作为仅元数据操作。要求SWITCH
是源表和目标表必须具有相同的架构、索引、约束,并且存储对齐。这些要求大概与重命名技术相同,因此工作量相似。请注意,与使用分区函数和方案进行表分区不同,
SWITCH
非分区表可以在任何 SQL Server 版本中使用。下面是选项 B 的示例 DDL 脚本: