一. 问题描述
2023-05-18 将StarRocks从2.3.0升级到2.5.5。
升级完成后,所有的查询均比较慢,前端报表页面点开也卡。
二. 解决方案
2.1 从慢查询定位
StarRocks慢查询对应的GitHub地址:https://github.com/WuMenglong/fe-plugins-auditloader
select *
from starrocks_audit_db__.starrocks_audit_tbl__ sat
where sat.isQuery = 1
and queryType = 'slow_query'
order by sat.`timestamp` desc;
可以看到,慢查询里面,CPU用于解析SQL生成执行计划的时间非常长,远高于实际执行的时间
2.2 定位CPU解析时间就的问题
从普罗米修斯上看到,集群CPU资源使用率不高,也就不存在资源的瓶颈
后面想到了,新版本的统计信息会有新增,那我们来看看统计信息
select * from table_statistic_v1 tsv order by tsv.update_time DESC ;
select * from column_statistics cs order by cs.update_time desc;
-- 直方图手工收集
select * from histogram_statistics hs order by hs.update_time desc;
从下图我们可以看到列的统计信息是此次新增的,要收集所有存量表的列的统计信息,耗时较久
CPU解析SQL生成执行计划,需要依赖统计信息,如统计信息正在收集中,那么此时CPU会等待统计信息收集完成或采用动态采样
无论使用哪一种方式,都会消耗CPU时间,导致SQL执行计划生成时间大大增加。
顾我们耐心等待统计信息收集完成即可。
有点坑,升级后自动开启全量的统计信息采集(而不是抽样的)
后台查看,任务处于pending状态