2021-07-06 18:43:03
开源OLAP数据库Doris索引:前缀索引
一、定义与原理
前缀索引是Apache Doris中一种基于排序键(Sort Key)构建的稀疏索引。在Doris中,数据按照指定的一个或多个列进行排序存储,这些列被称为排序键。前缀索引则基于这些排序键的前几个字节(或字符)构建,用于加速查询过程。
具体来说,Doris将表中的行按照排序键进行排序,并每间隔一定数量的行记录一个索引项。这个索引项包含了当前数据块中第一行数据的排序列前缀(长度不超过36字节),以及该数据块的起始行号。由于前缀索引相对较小,可以全量加载到内存中,从而快速定位到目标数据块,减少磁盘I/O操作,提升查询效率。
二、使用场景
前缀索引主要适用于以下场景:
需要注意的是,由于一个表的Key定义是唯一的,因此一个表只有一种前缀索引。对于使用非前缀索引列作为查询条件的查询,可能需要考虑其他加速手段,如创建倒排索引或物化视图。
三、实现机制
Doris的前缀索引实现机制如下:
四、使用示例
假设有一个表,其排序列为以下五列:
那么,该表的前缀索引为:user_id(8 Bytes) + age(4 Bytes) + message(prefix 20 Bytes)。当查询条件为user_id和age时,可以极大地加快查询速度。
五、注意事项
六、图片展示
以下图片展示了Doris前缀索引的实现机制:




通过以上图片,可以更加直观地理解Doris前缀索引的实现机制和查询加速过程。