【发布时间】:2019-05-12 09:18:17
【问题描述】:
使用 Spanner 的最佳做法强烈建议避免使用时间戳或其他顺序标识符作为键的第一部分,因为这会创建热点。当需要基于时间的排序时,建议的解决方法之一是使用基于单个键的数字分片作为前缀,以获得均匀分布(如this page)。
据我了解,Spanner 将根据键(例如,在本例中为分片)自动创建拆分,并且在执行获取某个时间戳之后的所有行的查询时,它可能需要在所有行上运行查询的单个拆分然后加入。
最后的问题: 是否存在与唯一分片数量成正比的成本,所以如果我使用 1024 个分片,查询表的成本可能会高于使用 16 个分片的成本,或者是只需要拆分,Spanner 只会在需要时拆分拆分键?
作为一个极端的例子,实际使用单个条目 id 作为键的第一部分而不是分片是否会产生成本(除了一个是数字而一个是字符串的事实)?这样做会创建更多的“分片”,但同样,影响将取决于此处的相关内容是唯一分片(键前缀)还是拆分。
【问题讨论】:
标签: google-cloud-platform sharding google-cloud-spanner