StarRocks 近期公布了1.19 版本,上面介绍一下新版本的外围性能:

Global Runtime Filter

关系型数据库中,表的关联查问是非常常见的操作。StarRocks 在1.19版本中实现了 Global Runtime Filter,通过动静过滤那些不会命中 join 的输出数据来大幅缩小数据的传输和计算,从而晋升 join 的执行性能。

在应用过程中,布局器会依据右表的数据量主动抉择是否构建 Global Runtime Filter,不须要用户进行额定的参数调整。上面以 TPCH 100G Query 17为例,其中 lineitem 表数量是 600M,orders 表数量是 150M。运行并行度设置为8。

# TPCH Query 17select sum(l_extendedprice) / 7.0 as avg_yearly from lineitem, part where p_partkey = l_partkey     and p_brand = 'Brand#23'      and p_container = 'MED BOX'       and l_quantity < ( select  0.2 * avg(l_quantity) from  lineitem  where l_partkey = p_partkey );

测试后果如下,通过开启 Global Runtime Filter,性能晋升了6倍。

BE节点内的磁盘平衡

随着数据量逐步增大,当用户有加盘需要时,须要 StarRocks 主动进行数据平衡。StarRocks 在1.19版本中优化了磁盘平衡算法,在保证数据在各个BE之间平衡的根底上,新增了单个BE外部磁盘之间的 tablet 平衡,从而更好地利用新加的盘。

平衡步骤如下:

  1. 进行所有BE之间的磁盘平衡。
  2. 当集群达到平衡之后,进行每个 BE 外部磁盘之间的平衡。包含每个 BE 外部磁盘之间磁盘使用率的平衡和磁盘之间 tablet 散布的平衡。

[试验性能]Primary Key

为更好地反对实时/频繁更新性能,StarRocks 在1.19版本中新增了一种表的类型: 主键模型(Primary Key)。相较 Unique Key,该类型的表更好地解决了行级别的更新和删除操作,同时也极大地撑持了MySQL或其余数据库同步到 StarRocks 的场景。

原有的表类型整体上采纳了读时合并(Merge-On-Read)的策略,写入时解决简略高效,然而读取(查问)时须要在线合并多版本,重大影响了查问性能。Primary Key 应用内存索引打消了这一问题,取得读性能的晋升,其性能根本能够和 Duplicate Key 相近,是 Unique Key 的3-15倍(取决于版本的数量)。测试数据成果如下:

另外,在 TPCH 测试中,有导入的查问相较没有导入的查问,性能降落仅在10%左右。

以后,Primary Key 反对 Stream Load、Broker Load 和 Routine Load。同时配合Flink-connector 能够实现 MySQL 数据的秒级同步。

StarRocks-migrate-tools 能够依据 MySQL 和 StarRocks 的集群信息和表构造主动生成 source table 和 sink table 的建表语句。通过 Flink-cdc-connector 生产 MySQL 的 binlog,而后通过 Flink-connector-starrocks 写入 StarRocks。

参考文档:https://docs.starrocks.com/zh...主键模型

[试验性能]StarRocks表面写入

StarRocks 反对以内部表的模式接入其余数据源,以后反对的数据源类型有 MySQL、HDFS、ElasticSearch、Hive 以及 StarRocks。

StarRocks 在1.19版本中反对了将数据通过表面的形式写入另一个 StarRocks 集群的表中,以解决用户的读写拆散需要,提供更好的资源隔离。仅需三步用户即可实现表面的周期性写入。

  • 在指标集群上创立一张指标表
  • 在表面集群上创立一个 Schema 信息与指标表统一的表面
  • 在表面属性中指定指标集群和源表的信息 以后仅反对 StarRocks 表面的写入,其余表面将在将来反对。

参考文档:https://docs.starrocks.com/zh...内部表

其余优化

  • 优化了 CPU Cache 的应用,从而晋升了 count distinct int/group by int 语句的性能
  • 优化了算法,从而晋升了or语句的性能
  • Export 反对局部列导出
  • 优化 show processlist,显示具体SQL
  • SET_VAR 反对多个变量设置
  • StarRocks-DataX Writer 反对设置 interval flush

v1.19.0 残缺Release Notes:https://docs.starrocks.com/zh...