我知道这个主题可能已经讨论过几次,但是对此有不同的看法。我的情况是我创建了一个数据库,该数据库将填充40亿条记录,并且每年将增加1到2百万条记录。我们在美国和欧洲都有服务器,我们进行数据库复制,以使它们在这些服务器上保持相似,例如与Facebook在复制上所做的相同。我的问题是,作为表的主键,我应该使用BigInt还是Uniqueidentifier,否则对于复制所用的内容没有任何区别。
或
毫无疑问,请使用Uniqueidentifier
。
不需要添加bigint
列,您不需要它。
如果您使用合并复制,但没有唯一标识符,则服务器仍将添加该列。
通过使用GUID,您现在可以设置多主数据库架构。如果使用bigint作为标识字段,则要么强迫自己仅使用一个主服务器(以控制bigint),要么必须提出一种防止多个服务器相互冲突的方案。此外,通过使用GUID,您可以摆脱可猜测的ID的困扰-这通常是一件好事。
我自己在亿万个记录范围内的测试(添加/删除了数百万个daily)显示,使用GUID和int作为id时,性能没有下降。