2017-12-18 126 views
0

我们正在考虑将用户交互与用户表交错,唯一的问题是每个用户会有数万次交互,所以64MB的一个键 - 价值范围很可能很少适合。父级性能中的多个键值范围的交互

的CockroachDB文档指出:

如果储存的 任何主键值交错的数据的量的根表比的键值范围的最大尺寸(默认64MB )放大,交错优化将会减少。

  • 那么,性能下降会有多糟呢?
  • 我们是否应该打扰交叉表?

用户和交互表会稍微大一点,我们目前的估计会在5到10TB左右。会有大量聚合查询需要在交互和用户表之间进行连接,然后在某些用户列上进行聚合。 Elasticsearch已经失败了,因为它的可怕的亲子加入性能(并且不让我开始强制过滤器重新排序...),所以也许有人在这种情况下有CockroachDB的生产经验?

回答

2

有一个微基准https://github.com/cockroachdb/loadgen#interleave用于测量CockroachDB中交叉表和非交叉表的性能。 V1.1.3中的交错连接远不如最佳,但significant improvements已针对v2.0发布(如果您想要测试交错表和连接查询作为实验,则可以从主分支构建二进制文件)。

在基准测试中,您可以通过指定基准中--merchants--products的行数来模拟父子关系。注意:由于products被插入到merchants中,因此它将products行均匀分配到merchants中。

通常情况下,您应该期望交错表始终在CockroachDB v2.0中为父子连接查询执行非交错表。正如文档中提到的那样,对于交叉表,您会牺牲表扫描的性能(读取:需要表扫描的查询)。

+0

感谢您的回答。看起来我们会随着交错滚动,希望数据在2.0点击之前不会增长得太快,但我想我们总是可以在问题上抛出更多机器:-) – ACimander