Doris开发手记4:倍速性能提升,向量化导入的性能调优实践

本文记录了作者对Doris向量化导入性能优化的过程。通过分析用户反馈的性能问题,作者发现并解决了Cast操作和缺页中断导致的性能瓶颈。通过对内存分配和复用的改进,减少了缺页中断,提高了导入效率。文章还提出了进一步的优化TODO,期待Doris未来在性能和稳定性上的提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近居家中,对自己之前做的一些工作进行总结。正好有Doris社区的小伙伴吐槽向量化的导入性能表现并不是很理想,就借这个机会对之前开发的向量化导入的工作进行了性能调优,取得了不错的优化效果。借用本篇手记记录下一些性能优化的思路,抛砖引玉,希望大家多多参与到性能优化的工作总来。

1.看起来很慢的向量化导入

问题的发现

来自社区用户的吐槽:向量化导入太慢了啊,我测试了xx数据库,比Doris快不少啊。有招吗?

啊哈?慢这么多吗? 那我肯定得瞅一瞅了。
于是对用户case进行了复现,发现用户测试的是代码库里ClickBench的stream load,80个G左右的数据,向量化导入耗时得接近1200s,而非向量化导入耗时为1400s。

向量化 非向量化
1230s 1450s

ClickBench是典型的大宽表的场景,并且为Duplicate Key的模型,原则上能充分发挥向量化导入的优势。所以看起来一定是有些问题的,需要按图索骥的来定位热点:

定位热点的技巧

笔者通常定位Doris代码的热点有这么几种方式,通过这些方式共同组合,能帮助我们快速定位到代码真正的瓶颈点

  • Profile: Doris自身记录的耗时,利用Profile就能分析出大致代码部分的瓶颈点。缺点是不够灵活,很多时候需要手动编写代码,重新编译才能添加我们需要进行热点观察的代码。

  • FlameGraph: 一旦通过Profile分析到大概的热点位置,笔者通常会快速通读一遍代码,然后结合火焰图来定位到函

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值