Google Cloud Spanner 中的自动增量
Autoincrement in Google Cloud Spanner
Google Cloud Spanner recommends 反对对主键使用单调递增的整数。这对于顶级表来说非常有意义,因为它会创建热点。但是交错表呢?无论如何,它们将存储在同一个节点上。它们也按排序顺序保存,因此使用 UUID 或其他一些随机 ID 似乎不是最佳选择,尤其是如果它们也将按排序顺序检索时。
这里读取最大 ID 并为新行存储 maxId + 1 是正确的解决方案吗?
交错的子 table 行以父 table 的键为前缀,因此可以将它们视为 non-sequential 键,只要父键是non-sequential。在这种情况下,通常应该没问题,因为正如您所注意到的,整个键范围将由一个跨度服务器提供服务。如果您担心在这种情况下发现单个 Span 服务器的热点,最好不要交错 table.
还应该注意的是,它实际上是单调增加 或减少 键,建议不要这样做,因为它们具有相同的效果,只是在范围的两侧。
Google Cloud Spanner recommends 反对对主键使用单调递增的整数。这对于顶级表来说非常有意义,因为它会创建热点。但是交错表呢?无论如何,它们将存储在同一个节点上。它们也按排序顺序保存,因此使用 UUID 或其他一些随机 ID 似乎不是最佳选择,尤其是如果它们也将按排序顺序检索时。
这里读取最大 ID 并为新行存储 maxId + 1 是正确的解决方案吗?
交错的子 table 行以父 table 的键为前缀,因此可以将它们视为 non-sequential 键,只要父键是non-sequential。在这种情况下,通常应该没问题,因为正如您所注意到的,整个键范围将由一个跨度服务器提供服务。如果您担心在这种情况下发现单个 Span 服务器的热点,最好不要交错 table.
还应该注意的是,它实际上是单调增加 或减少 键,建议不要这样做,因为它们具有相同的效果,只是在范围的两侧。