摘要: 近期正在对 Doris 的性能问题展开排查,发现了一个极为“吊诡”的函数执行性能问题。经过一系列的CPU热点代码分析之后,发现“罪魁祸首”居然是libtoolchain中的静态库导致的。借用本篇手记记录下问题的发现,希望记录下一些对于C/C++程序链接问题的分析思路,也希望读者也能有所收获。 1.奇 阅读全文
posted @ 2024-06-17 09:10 HappenLee 阅读(112) 评论(0) 推荐(0) 编辑
摘要: DuckDB 是近年来颇受关注的OLAP数据库,号称是OLAP领域的SQLite,以精巧简单,性能优异而著称。笔者前段时间在调研Doris的Pipeline的算子并行方案,而DuckDB基于论文《Morsel-Driven Parallelism: A NUMA-Aware Query Evalua 阅读全文
posted @ 2023-02-12 14:09 HappenLee 阅读(2285) 评论(0) 推荐(1) 编辑
摘要: 最近居家中,对自己之前做的一些工作进行总结。正好有Doris社区的小伙伴吐槽向量化的导入性能表现并不是很理想,就借这个机会对之前开发的向量化导入的工作进行了性能调优,取得了不错的优化效果。借用本篇手记记录下一些性能优化的思路,抛砖引玉,希望大家多多参与到性能优化的工作总来。 1.看起来很慢的向量化导 阅读全文
posted @ 2022-10-21 12:10 HappenLee 阅读(1647) 评论(0) 推荐(0) 编辑
摘要: 转眼间,C20的标准已经发布快两年了。不少C的开源项目也已经将标准升级到最新的C20了,笔者也开启了新标准的学习历程了。所以借这系列的博文,记录下笔者学习新标准的一些心得与吐槽~~ 作为C20系列的第一篇开篇之文,就要从千呼万唤始处理的concept聊起了,后续很多新的feature的实现,也仰赖新 阅读全文
posted @ 2022-03-12 20:38 HappenLee 阅读(508) 评论(0) 推荐(2) 编辑
摘要: Apache Doris的BE部分是由C++编写,当出现一些内存越界,非法访问的问题时会导致BE进程的Crash。这部分的问题常常较难排查,同时也很难快速定位到对应的触发SQL,给使用者带来较大的困扰。所以下面会介绍通过Linux的CoreDump快速定位到问题SQL,并复现问题的方式。 1.查看日 阅读全文
posted @ 2021-07-15 14:15 HappenLee 阅读(912) 评论(0) 推荐(0) 编辑
摘要: 最近一直在进行Doris的向量化计算引擎的开发工作,在进行CPU热点排查时,发现了存储层上出现的CPU热点问题。于是尝试通过SIMD的指令优化了这部分的CPU热点代码,取得了较好的性能优化效果。借用本篇手记记录下问题的发现,解决过程一些对于C/C++程序性能问题的一些解决思路,希望各位也能有所收获。 阅读全文
posted @ 2021-07-09 12:27 HappenLee 阅读(1024) 评论(0) 推荐(1) 编辑
摘要: 分析完成了聚合以及向量化过滤,向量化的函数计算之后。本篇,笔者将分析数据库的一个重要算子:排序。让我们从源码的角度来剖析ClickHouse作为列式存储系统是如何实现排序的。 本系列文章的源码分析基于ClickHouse v19.16.2.2的版本。 1.执行计划 老规矩,咱们还是先从一个简单的查询 阅读全文
posted @ 2021-07-01 19:07 HappenLee 阅读(1380) 评论(0) 推荐(0) 编辑
摘要: 乍一看这个标题很玄乎,但是其实这只是涉及一个很简单的CPP的模板推导的知识点。 笔者近期进行CPP开发工作时,在编译时遇到了如下的模板类型的推断错误:note: candidate template ignored: deduced conflicting types for parameter T 阅读全文
posted @ 2021-04-30 12:25 HappenLee 阅读(1429) 评论(1) 推荐(1) 编辑
摘要: 笔者在源码笔记1之中分析过ClickHouse的聚合函数的实现,但是对于各个接口函数的实际如何共同工作的源码,回头看并没有那么明晰,**主要原因是没有结合Aggregator的类来一起分析聚合函数的是如果工作起来的。**所以决定重新再完成一篇聚合函数的源码梳理的文章,帮助大家进一步的理解ClickH 阅读全文
posted @ 2021-04-20 15:50 HappenLee 阅读(1461) 评论(0) 推荐(0) 编辑
摘要: 书接上文,本篇继续分享ClickHouse源码中一个重要的流,FilterBlockInputStream的实现,重点在于分析Clickhouse是如何在执行引擎实现向量化的Filter操作符,而利用这个Filter操作符的,就可以实现where, having的数据过滤。 话不多说,准备发车~~ 阅读全文
posted @ 2021-03-01 12:39 HappenLee 阅读(1517) 评论(2) 推荐(0) 编辑