我最近开始研究一个具有合并复制功能的应用程序,用于离线方案。我们有一个int标识列,用作pk和集群索引。我们在每个表中都有uniqueidentifier列,因为复制需要它。 在该字段中,由于标识列,我们有时会遇到一个或多个订阅数据库的标识范围用完的问题。然后我们的支持介入,并花费大量时间压缩表,重新初始化订阅等。 为了摆脱这个问题,我看到了2个解决方案。 1.使用BigInt列而不是int并保持标识。这将提供更大的范围,希望我们永远不会再看到这个问题。 2.删除标识列,并将uniqueidentifier列作为pk和聚类索引。此列已填充newseqeuntialID()。这将永久摆脱这个问题。这也将减少表的总体大小,因为1列已从表中消失,但它将增加外键索引和其他非聚簇索引的大小。
我做了一些负载测试,尽管bigint在时间方面没有什么进展,但没有太大的差异。
您如何看待这两个选项或我没有想到的任何其他选项?