0

我们正在考虑将用户交互与用户表交错,唯一的问题是每个用户将有数万次交互,因此一个键值范围的 64MB 很可能很少适合。

CockroachDB 文档指出:

如果为根表的任何主键值存储的交错数据量大于键值范围的最大大小(默认为 64MB),则交错优化将减少。

  • 那么,性能下降会有多糟糕呢?
  • 我们甚至应该费心交错我们的桌子吗?

用户和交互表会稍微大一点,我们目前估计在 5 到 10TB 左右。将会有大量的聚合查询,需要在交互和用户表之间进行连接,然后在一些用户列上进行聚合。

Elasticsearch 已经让我们失望了,因为它糟糕的父子连接性能(不要让我开始强制过滤器重新排序......),所以也许有人对这种情况有 CockroachDB 的生产经验?

4

1 回答 1

2

有一个微基准https://github.com/cockroachdb/loadgen#interleave用于测量 CockroachDB 中交错与非交错表的性能。v1.1.3 中的交错连接远没有达到最佳效果,但v2.0 版本已进行了重大改进(如果您只想测试交错表和连接查询作为实验,您可以从 master 构建二进制文件分支)。

--merchants在基准测试中,您可以通过在基准测试中指定行数来模拟父子关系--products。注意:由于products被交错到merchants中,它会将行均匀分布productsmerchants中。

一般来说,在 CockroachDB v2.0 中,对于父子连接查询,交错表总是优于非交错表。如文档中所述,您将牺牲交错表的表扫描(阅读:需要表扫描的查询)的性能。

于 2017-12-18T16:12:07.270 回答