新版本3.3升级完查询性能不如2.5版本,同一个查询不同时长返回,结果也不一样

【详述】为了从2.5.20版本升级到3.3.7,重新搭建一套新集群,把生产数据迁到新集群后,发现BI查询很慢,sql相同返回时间不一样,取其一sql验证:2.5版本700多毫秒,3.3.7要1.5s返回,然后查询返回结果也不一样
【背景】生产环境版本升级
【业务影响】BI查询比较慢,查询结果不一样
【是否存算分离】否
【StarRocks版本】3.3.7
【集群规模】3fe(3follower+3be(fe与be混部)
【机器信息】128C/256G
【联系方式】社区群13-麦咪
【附件】
查询sql如下,查询时间慢是一个问题,还有就是一个结果返回不一样,好像是数据关联不上:
select statmonth,b.companycode,
case when premplanIFNULL(a.peroid,b.peroid)=0 then null else netprm_idate/(premplanIFNULL(a.peroid,b.peroid)) end as qB1C6B74ADEFB1D07E0530B6C010A845Dtimeachiverate_time
from (
select companycode companycode,sum(premplan*10000) premplan ,
(datediff(‘2024-12-31’,‘2024-01-01’) + 1)/(datediff(‘2024-12-31’,‘2024-01-01’)+1) as peroid
from pub_its_prmplan
where kindcode = ‘03’
and datadate >= ‘2024-01-01’ and datadate <= ‘2024-12-31’
and com_flag =‘companycode’
group by companycode ) b
left join (
select statmonth,
companycode ,
sum(netprm_idate) over (partition by companycode order by statmonth,companycode rows between unbounded PRECEDING and current row) netprm_idate,
(datediff(max(date_add(statmonth,1)) over (partition by companycode order by statmonth,companycode rows between unbounded PRECEDING and current row) , ‘2024-01-01’ ))/(datediff(‘2024-12-31’,‘2024-01-01’)+1) peroid
from (
select ‘2024-12-31’ as statmonth,
companycode as companycode,
sum(netprm_idate) netprm_idate
from app_ply_model_main_month
left join pub_its_company on app_ply_model_main_month.buiscomcode=pub_its_company.buiscomcode
left join pub_its_statdate on app_ply_model_main_month.incomedate=pub_its_statdate.statdate
where app_ply_model_main_month.datadate = ‘2024-12-31’
and app_ply_model_main_month.incomedate>=‘2024-01-01’
and app_ply_model_main_month.incomedate<=‘2024-12-31’
group by ‘2024-12-31’,companycode) a
order by 1) a
on a.companycode=b.companycode
2.5.20版本查询结果:


3.3.7版本查询结果:

麻烦发一下两个版本相同SQL的几个信息

  1. profile
  2. query dump
  3. explain costs

2.5.20版本profile.txt (175.5 KB) 3.3.7版本profile.txt (197.8 KB)

我最近做选型安装的两个版本的sql查询对比,发现新版本的sql查询也是变慢了

慢好多,尤其是前端应用查的时候

2.5.20版本explain.txt (75.6 KB) 3.3.7版本explain.txt (78.1 KB)

dump_2.5.20.txt (8.1 KB) dump_3.3.7.txt (14.7 KB)

看这个Profile,2.5.20也是1s啊。

image

image

可是3.3版本的在DBeaver上面为什么1.7s才返回结果,2.5版本的700ms就能获取到结果,这感觉怪怪的

难道是哪个地方配置错了导致性能下降了吗

如果在mysql客户端访问呢,会有性能差距吗?

客户端上面很快,1s内出来了


但是结果和在DBeaver上面执行结果不一样:

然后第二遍之后执行,结果又变了不对了,2.5版本实际都是能关联上的,不是null值

在3.3版本上,在DBeaver,多次执行结果不一样?

把DBeaver的输出行数限制200去除,看看还有这个问题吗?是不是Limit 200导致的BUG?

但是3.3在mysql客户端上面,也是没有数据的

这是在2.5上面的结果,旧版本无论执行多少次都是这个结果的:

我在3.3上面去除限制还是一样结果:

就是3.3上都是Null,2.5上是有结果的,不管是在哪里执行?