赞
踩
基于starRocks官方文档,对其内容进行一定解析,方便大家理解和使用。
若无特殊标注,startRocks版本是3.2。
下面的章节和官方文档保持一致。
StarRocks 是一款高性能分析型数据仓库,使用向量化、MPP 架构、CBO、智能物化视图、可实时更新的列式存储引擎等技术实现多维、实时、高并发的数据分析。StarRocks 既支持从各类实时和离线的数据源高效导入数据,也支持直接分析数据湖上各种格式的数据。StarRocks 兼容 MySQL 协议,可使用 MySQL 客户端和常用 BI 工具对接。同时 StarRocks 具备水平扩展,高可用、高可靠、易运维等特性。广泛应用于实时数仓、OLAP 报表、数据湖分析等场景。
内容 | 说明 |
---|---|
高性能分析型数据仓库 | 相比于oltp,更适合olap |
向量化 | 基于CPU层级的优化(clickhouse有相关优化) |
MPP 架构 | 相比于hadoop架构更适合olap |
CBO | 优化多表join的执行时,starRocks内部的执行先后顺序 |
智能物化视图 | 用于实现单表的实时数据转换,类似clickhouse的物化视图 |
可实时更新的列式存储引擎 | 可支持实时update |
兼容 MySQL | 可使用mysql相关语法和client工具 |
采用 Cascades 框架。简单描述,就是判断预估来优化重型SQL的执行策略。具体内容,可以自行了解。
CBO 统计信息 | StarRocks
同步物化视图和异步物化视图比较。
从下图比较中可以看到,同步物化视图的功能比较简单,基本上是两个场景,分别是map映射和简单聚合。
map映射:实现字段间转换,例如时间戳转换为日期,string转int
简单聚合:计数器类的函数,单表groupby维度信息,计算sum、max、min等可以直接比较的函数
异步物化视图 | 同步物化视图(Rollup) | |
---|---|---|
本质 | 物理表,进行预计算(提升查询效率,先匹配是否命中) | 基表的索引 |
处理方式 | 定时或者手动计算 | 实时计算 |
风险点 | 多张大表关联是否存在执行失败的风险,而且依赖血缘关系,没有外部调度的话,时效性如何确认 | 对单张表做多个同步物化视图,会影响性能(瞬时并发量大)建议:1对1 |
使用场景 | 理论上可以适用于全部场景,但在单表简单处理上没有同步物化视图效率高 |
同步物化视图支持的函数:
原始查询聚合函数 | 同步物化视图构建聚合函数 |
---|---|
sum | sum |
min | min |
max | max |
count | count |
bitmap_union, bitmap_union_count, count(distinct) | bitmap_union |
hll_raw_agg, hll_union_agg, ndv, approx_count_distinct | hll_union |
和同步物化视图进行比较,比较内容参考从上。
就是多张表关联,把相同的关联键作为分桶键,这样相关的数据就会出现在相同节点。
能够减少数据多节点分布时 Join 操作引起的数据移动和网络传输,从而提高查询性能。
实现列拆分,转换为多行数据。
mysql> select * from lateral_test2;
+------+-------+------+
| v1 | v2 | v3 |
+------+-------+------+
| 1 | 1,2,3 | 1,2 |
| 2 | 1,3 | 1,3 |
+------+-------+------+
-- 对单行数据进行 Unnest 操作。 mysql> select v1, unnest from lateral_test2, unnest(split(v2, ",")); +------+--------+ | v1 | unnest | +------+--------+ | 1 | 1 | | 1 | 2 | | 1 | 3 | | 2 | 1 | | 2 | 3 | +------+--------+ -- 对多行数据进行 Unnest 操作,需要指定别名。 mysql> select v1, t1.unnest as v2, t2.unnest as v3 from lateral_test2, unnest(split(v2, ",")) t1, unnest(split(v3, ",")) t2; +------+------+------+ | v1 | v2 | v3 | +------+------+------+ | 1 | 1 | 1 | | 1 | 1 | 2 | | 1 | 2 | 1 | | 1 | 2 | 2 | | 1 | 3 | 1 | | 1 | 3 | 2 | | 2 | 1 | 1 | | 2 | 1 | 3 | | 2 | 3 | 1 | | 2 | 3 | 3 | +------+------+------+
2.5版本以后上线的功能,需要配置FE、BE参数启动。查询的执行引擎为 Pipeline。
相当于缓存该表的之前的查询内容。
之后的查询,如果有类似的,可以直接获取,提升查询效率。
如果判断是否类似,需要通过执行计划。
除增长的排序键和前缀索引,还提供bitmap和bloom filter两种索引。
前者适合基数比较低的列(就是枚举值比较少的,例如订单状态),后者适合基数比较高的列(例如店铺id)。
Bloom filter是判断文件中是否包含对应的数据,为了保证不缺失数据,存在下面说的假阳性。
Bloom filter 索引有一定的误判率,也称为假阳性概率 (False Positive Probability),即判断某行中包含目标数据,而实际上该行并不包含目标数据的概率。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。