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 17
select 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 平衡,从而更好地利用新加的盘。
平衡步骤如下:
- 进行所有 BE 之间的磁盘平衡。
- 当集群达到平衡之后,进行每个 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…