美文网首页
2022-12-14 前缀索引

2022-12-14 前缀索引

作者: felix_feng | 来源:发表于2022-12-14 09:27 被阅读0次

为加速查询,StarRocks 在内部组织和存储数据时,会把表中数据按照指定的一个或多个列进行排序。这些用于排序的列,称之为排序键 (Sort Key)。

为减少内存开销,StarRocks 在排序键的基础上又引入了前缀索引 (Prefix Index)。表中每 1024 行数据构成一个逻辑数据块 (Data Block)。每个逻辑数据块在前缀索引表中存储一项索引,内容为表的维度列的前缀,并且长度不超过 36 字节。前缀索引是一种稀疏索引,使用某行数据的维度列的前缀查找索引表,可以确定该行数据所在逻辑数据块的起始行号。前缀索引的大小会比数据量少 1024 倍,因此会全量缓存在内存中,在实际查找的过程中可以有效加速查询。

前面提到,StarRocks的底层数据是按照排序键排序后存储的。而前缀索引(shortkey index),就是在排序键的基础上实现的一种根据给定前缀列,有效加速查询的索引方式。

总结一下排序键的注意事项:

1、排序键中包含的列必须是从第一列开始,并且是连续的;

2、排序键中列的顺序是由create table语句中的列顺序决定的;

3、排序键不需要包含过多的列。如果选择了大量的列用于排序,那么排序的开销会导致数据导入的时间和资源使用增加;

4、在大多数时候,排序键中的前面几列也能很准确的定位到数据行所在的区间,更多列的排序也不会带来查询的提升;

5、排序键的选择需要结合查询场景,我们需要把经常作为查询条件的列建议放在排序键中。当排序键涉及多个列的时候,我们要将区分度高、经常查询的列建议放在前面。若一个字段只是偶尔查询,不需要将其放入排序键(当使用更新模型或主键模型时尤其注意这一点)。
首先明确一点,前缀索引不需要我们单独手动创建或指定,在建表时其实已经默认完成了指定,它是StarRocks自带的一种加速方式。前缀索引的默认要求主要有:

1、前缀索引包含的列只能是排序键中的列;

2、前缀索引包含的列数不超过3;

3、前缀索引的字节数不超过36字节;

4、前缀索引不能包含FLOAT/DOUBLE类型的列;

5、前缀索引中VARCHAR类型列只能出现一次,并且是末尾位置(即使没有达到36个字节,如果遇到VARCHAR,也会直接截断,不再往后继续);

6、若在建表语句中指定PROPERTIES {"short_key" = "integer"}时, 可突破上面的第2、3条限制。

StarRocks默认每1024行构成一个逻辑块,取逻辑块首行数据的前36个字节作为这行数据的前缀索引存储在shortkey index表中(这个表上层不可感知)。

相关文章

  • 2022-12-14 前缀索引

    为加速查询,StarRocks 在内部组织和存储数据时,会把表中数据按照指定的一个或多个列进行排序。这些用于排序的...

  • MySQL索引机制(详细+原理+解析)

    一.索引的类型与常见的操作 前缀索引 MySQL 前缀索引能有效减小索引文件的大小,提高索引的速度。但是前缀索引也...

  • 前缀索引,中看也中用!

    @[toc]最近几篇文章,都是在和大家聊索引的问题,今天我们来看看前缀索引。 1.什么是前缀索引 所谓前缀索引说白...

  • MySQL实战 | 11 怎么给字符串字段加索引?

    两种: 全字段索引 前缀索引 举例: 可以对 email 字段创建全字段索引,或者前缀索引。 区别 1、全字段索引...

  • mysql笔记

    前缀索引:使用字段的部分前缀做为索引,可以有效减少索引的长度 1)、创建索引 alter table testdb...

  • Mysql

    索引(一般监控到慢SQL,才会建索引) 前缀索引 常见索引误区 多列联合索引 左前缀例子(是一种联合索引的匹配规则...

  • Mysql前缀索引长度确定方法

    MySQL 前缀索引能有效减小索引文件的大小,提高索引的速度。但是前缀索引也有它的坏处:MySQL 不能在 ORD...

  • 高性能的索引策略【高性能mysql第三版笔记】

    1. where右边使用独立的列 2. 前缀索引和索引选择性 前缀索引:索引最开始的部分字符,可以大大节约索引空间...

  • 前缀索引

    今天读了这几页,好难啊= =。智商不够用啊,想了好久才想明白原理。 首先要明白为什么要有前缀。完整的索引不行吗? ...

  • 高性能索引策略

    索引的优点: 索引策略: 独立的列 前缀索引和索引选择性 多列索引

网友评论

      本文标题:2022-12-14 前缀索引

      本文链接:https://www.haomeiwen.com/subject/ifxkqdtx.html