MSSQL大数据复制主键

问题描述 投票:0回答:1

我知道这个主题可能已经讨论过几次,但是对此有不同的看法。我的情况是我创建了一个数据库,该数据库将填充40亿条记录,并且每年将增加1到2百万条记录。我们在美国和欧洲都有服务器,我们进行数据库复制,以使它们在这些服务器上保持相似,例如与Facebook在复制上所做的相同。我的问题是,作为表的主键,我应该使用BigInt还是Uniqueidentifier,否则对于复制所用的内容没有任何区别。

  1. 我应该创建一个非集群的uniqueidentifier主键,然后添加另一个集群的bigInt列吗?

  1. 我应该创建集群的bigint主键吗?
sql sql-server ssms database-replication sql-server-2017
1个回答
0
投票

毫无疑问,请使用Uniqueidentifier

不需要添加bigint列,您不需要它。

如果您使用合并复制,但没有唯一标识符,则服务器仍将添加该列。

通过使用GUID,您现在可以设置多主数据库架构。如果使用bigint作为标识字段,则要么强迫自己仅使用一个主服务器(以控制bigint),要么必须提出一种防止多个服务器相互冲突的方案。此外,通过使用GUID,您可以摆脱可猜测的ID的困扰-这通常是一件好事。

我自己在亿万个记录范围内的测试(添加/删除了数百万个daily)显示,使用GUID和int作为id时,性能没有下降。

© www.soinside.com 2019 - 2024. All rights reserved.