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