我一直想知道GUID在sql服务器中的唯一性。
我有一个中央数据库服务器和100个客户端数据库(都是SQL服务器)。我有一个合并复制(双向)设置,用于在客户端和主服务器之间同步数据。同步过程每天会发生2-3次。
对于要同步的每个表,我使用GUID作为PrimaryKey,本地的每个表都添加了新记录,并在本地生成了新的GUID。
当在每个客户端机器和主DB服务器上创建GUID时,它如何确保在所有客户端和主DB上生成唯一的GUID?
它将如何跟踪在其他客户机/服务器数据库中生成GUID,以便它不会重复该GUID?
发布于 2013-09-27 18:16:36
GUID是唯一的(出于您的目的)
互联网上有无休止的争论- I like this one
发布于 2013-09-27 18:17:43
它们的独特性来自于这样一个事实:随机生成相同的GUID的可能性极小,但仅此而已。
但对于您的目的来说,这应该是可以的-它们在分布式系统上应该是唯一的,概率非常高。
发布于 2013-09-27 20:55:23
你将不得不做更多的研究,但我认为GUID是基于MAC地址和时间戳的,如果我没记错的话。
http://www.sqlteam.com/article/uniqueidentifier-vs-identity
我认识一些在GUID上遇到唯一键冲突的MCM。
这怎么会发生呢?好吧,在虚拟世界中,你有虚拟适配器。
如果您将一个虚拟机从一台主机复制到另一台主机,您可以拥有相同的适配器、MAC地址?
现在,如果两个映像同时运行,则不可能获得唯一的GUID。
然而,这种情况很少见。您可以随时向关键字添加另一个字段以使其唯一。
关于是否使用GUID作为集群PK,有一个完整的争论。请记住,任何其他索引都将获取叶(节点)中的PK的副本。对于每个记录x个索引,这是16个字节。
我希望这能帮到你。
约翰
https://stackoverflow.com/questions/19048154
复制相似问题