【发布时间】:2011-05-27 21:06:03
【问题描述】:
我花了一天时间研究和测试在 Mac 上将 SQL Server 数据库与 CoreData 同步的不同方法。我已经测试了 INT 和 GUID(也是顺序 GUID)作为我的主键,尽管 GUID 在性能方面是迄今为止最差的,但我看不出没有其他方法可以确保跨系统的唯一性。
在平台之间同步数据时,将 GUID 用于主键是否是错误的方式?我很难相信公司在同步时会使用 GUID,但我阅读的有关该主题的大多数文章似乎都指向这一点。如果开发人员使用 GUID,有人知道如何提高性能吗?我尝试使用 GUID 作为非聚集索引的主键,并创建了一个日期字段作为我的聚集索引,但性能并没有太大的提升。
任何帮助都将不胜感激,特别是如果您解决了类似的问题。
【问题讨论】:
-
两个答案都是正确的,但决定使用 Marks 解决方案作为具有非聚集索引的 PK 的 GUID 和具有聚集索引的 createdDate 字段。对于其他查看此问题的人,我使用我的配置对 50000 条与此 (fotia.co.uk/fotia/DY.19.NewSequentialId.aspx) 类似的记录进行了测试,并得到了与 NEWID 测试类似的结果。我没有大量数据,因此在这种情况下,为了良好的同步而牺牲性能是值得的。
标签: sql-server database-design synchronisation