是否可以沿列对 psql 表进行分区?

问题描述

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

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

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

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

解决方法

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

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

块组过滤允许查询跳过数据块组 如果元数据表明块组中没有数据 将匹配谓词。换句话说,对于某些类型的查询 和数据集,它可以快速跳过很多数据,而不需要 甚至解压!