【发布时间】:2012-10-09 12:32:21
【问题描述】:
我目前正在开展一个项目,该项目需要使用 SQL Azure 数据库来存储即将推出的应用程序的数据。 该项目的目标之一是能够利用 SQL Azure 中的联合(分片)。 该项目的另一个既定目标是,如果客户选择此方案,则能够在本地硬件上运行此应用程序。
我面临的“障碍”之一是联邦缺乏对 IDENTITY 的支持。
虽然我了解为什么 IDENTITY 在 Azure 中不受支持,但我似乎有一个心理障碍,即接受使用 GUID 作为聚集索引是一个好主意。
Clustered and nonclustered indexes performance
我已经执行了上面第一个链接中的示例测试,并确认在 Azure 上将记录插入到具有 guid 作为聚集索引的表中与将相同数量的记录插入到具有用作聚集索引的 int 标识字段的表。
但是,由于我还需要支持本地安装,我认为可以肯定地说,当使用 guid 作为聚集索引而不是使用 int 标识时,本地性能会受到影响。
除了与性能相关的问题外,我还担心使用 16 字节宽的 guid 作为聚集索引与使用 4 字节宽的整数作为聚集索引。当然,磁盘空间相对便宜,但这仍然会很快增加(而且可能是不必要的)。
我意识到我最终将不得不根据需要支持这两个既定的项目目标做出权衡,但我希望做出我能做出的最明智的决定。
除了使用中间层 id 生成器之外,还有哪些替代方法可以在 Azure 上使用 Guid 作为聚集索引(和 \ 或主键)同时仍使用联合?
另外,我是否担心使用 Guid 作为离基的聚集索引(我承认他们很可能是这样)?如果有,为什么?
【问题讨论】:
标签: sql-server azure-sql-database