5

Google Cloud Spanner建议不要对主键使用单调递增的整数。这对于顶级表来说非常有意义,因为它会创建热点。但是交错表呢?无论如何,它们都将存储在同一个节点上。它们也按排序顺序保存,因此使用 UUID 或其他随机 ID 似乎不是最理想的,特别是如果它们也将按排序顺序检索时。

在这里读取最大 id 并为新行存储 maxId + 1 是正确的解决方案吗?

4

1 回答 1

3

交错的子表行以父表的键为前缀,因此只要父键是非顺序的,就可以将它们视为非顺序键。在这种情况下,通常应该没问题,因为正如您所注意到的,这整个键范围将由一个 Span 服务器提供服务。如果您担心在这种情况下会热点单个 Span 服务器,最好不要交错表。

还应该注意的是,建议不要使用单调递增或递减键,因为它们具有相同的效果,只是在范围的相对两侧。

于 2017-02-16T14:53:40.477 回答