任意列搜索之 列存储优化
标签 PostgreSQL , 列存储 , shard , 切片 , 大块 , 小块 , sort , 块级索引 , bitmap scan , 索引延迟 , 归整 背景 数据分析系统,决策系统的数据量通常非常庞大,属性(列)非常多,可能涉及到任意列的组合条件查询,筛选结果、聚合结果、多维分析等。 这种场景如何优化能满足实时的响应需求呢? PostgreSQL中有一些技术,可以满足此类场景。 1. 内置bitmapAnd bitmapOr,使用任意字段的索引搜索时,可以快速跳过不满足条件的块,快速的得到组合结果。 实测10亿数据,31个字段任意搜索,约几百毫秒的响应时间。 案例如下: 《多字段,任意组合条件查询(无需建模) - 毫秒级实时圈人 最佳实践》 还有这种方法,要求每个字段都建立索引,对数据写入会有性能影响(特别是与堆存储线性相关性很差的字段



