最近居家中,对自己之前做的一些工作进行总结。正好有Doris社区的小伙伴吐槽向量化的导入性能表现并不是很理想,就借这个机会对之前开发的向量化导入的工作进行了性能调优,取得了不错的优化效果。借用本篇手记记录下一些性能优化的思路,抛砖引玉,希望大家多多参与到性能优化的工作总来。
1.看起来很慢的向量化导入
问题的发现
来自社区用户的吐槽:向量化导入太慢了啊,我测试了xx数据库,比Doris快不少啊。有招吗?
啊哈?慢这么多吗? 那我肯定得瞅一瞅了。
于是对用户case进行了复现,发现用户测试的是代码库里ClickBench的stream load,80个G左右的数据,向量化导入耗时得接近1200s,而非向量化导入耗时为1400s。
向量化 | 非向量化 |
---|---|
1230s | 1450s |
ClickBench是典型的大宽表的场景,并且为Duplicate Key的模型,原则上能充分发挥向量化导入的优势。所以看起来一定是有些问题的,需要按图索骥的来定位热点:
定位热点的技巧
笔者通常定位Doris代码的热点有这么几种方式,通过这些方式共同组合,能帮助我们快速定位到代码真正的瓶颈点:
-
Profile: Doris自身记录的耗时,利用Profile就能分析出大致代码部分的瓶颈点。缺点是不够灵活,很多时候需要手动编