0

目前我有几张表,总和大约有 4000 列。1 米奥。每行具有相同的索引列。

我已经手动构建分区以将这些列拆分为 ~1500 的批次(bc. psql 最大列数为 1600)。

  1. 问题:是否有类似于在特定列的范围上进行分区的托管且更有效的方法?

  2. 问题:您认为使用 citus 10COLUMNAR支持并删除索引上的主键是否合适?

4

1 回答 1

2

Citus 10 COLUMNAR 存储似乎是您用例的理想选择。它使用Projection Pushdown,这意味着如果您通常运行的查询针对几列,它们将跳过他们不需要的列。

关于您的第二个问题,Columnar 中有某种“索引”。查询使用块组过滤,这允许它们跳过列中某些过滤器的块数据组。让我从一篇关于 Citus columnar 的博客文章中复制并粘贴相关部分:

如果元数据表明块组中没有任何数据与谓词匹配,则块组过滤允许查询跳过块组数据。换句话说,对于某些类型的查询和数据集,它可以快速跳过大量数据,甚至无需解压缩!

于 2021-03-26T13:50:38.300 回答