首页
学习
活动
专区
工具
TVP
发布

HappenLee的技术杂谈

专栏作者
76
文章
91699
阅读量
29
订阅数
[DuckDB] 多核算子并行的源码解析
DuckDB 是近年来颇受关注的OLAP数据库,号称是OLAP领域的SQLite,以精巧简单,性能优异而著称。笔者前段时间在调研Doris的Pipeline的算子并行方案,而DuckDB基于论文《Morsel-Driven Parallelism: A NUMA-Aware Query Evaluation Framework for the Many-Core Age》实现SQL算子的高效并行化的Pipeline执行引擎,所以笔者花了一些时间进行了学习和总结,这里结合了Mark Raasveldt进行的分享和原始代码来一一剖析DuckDB在执行算子并行上的具体实现。
HappenLee
2023-02-13
1.1K0
[​DuckDB] 多核算子并行的源码解析
DuckDB 是近年来颇受关注的OLAP数据库,号称是OLAP领域的SQLite,以精巧简单,性能优异而著称。笔者前段时间在调研Doris的Pipeline的算子并行方案,而DuckDB基于论文《Morsel-Driven Parallelism: A NUMA-Aware Query Evaluation Framework for the Many-Core Age》实现SQL算子的高效并行化的Pipeline执行引擎,所以笔者花了一些时间进行了学习和总结,这里结合了Mark Raasveldt进行的分享和原始代码来一一剖析DuckDB在执行算子并行上的具体实现。
HappenLee
2023-02-12
2.2K0
Doris开发手记4:倍速性能提升,向量化导入的性能调优实践
来自社区用户的吐槽:向量化导入太慢了啊,我测试了xx数据库,比Doris快不少啊。有招吗?
HappenLee
2022-10-31
4850
Doris开发手记2:用SIMD指令优化存储层的热点代码
最近在进行Doris的部分查询调优工作,通过perf定位CPU执行热点时,发现了以下的热点部分:
HappenLee
2021-07-14
1.2K0
ClickHouse源码笔记6:探究列式存储系统的排序
老规矩,咱们还是先从一个简单的查询出发,通过一步步的通过执行计划按图索骥ClickHouse的执行逻辑。
HappenLee
2021-07-08
9580
ClickHouse源码笔记5:聚合函数的源码再梳理
话不多说,直接上代码,笔者这里会将所有聚合函数的核心接口代码全部列出,一一梳理各个部分:
HappenLee
2021-04-23
1.1K0
C++雾中风景15:聊聊让人抓狂的Name Mangling
在进行编程的过程之中,我们常常遇见变量或函数重名的情况。比如:函数的重载,或通过不同程序块与命名空间变量与函数的重名。
HappenLee
2020-09-28
7580
C++雾中风景14:CRTP, 模板的黑魔法
C++11 引入了一个典型的CRTP的类:std::enable_shared_from_this 当我们有类需要被智能指针share_ptr管理,且需要通过类的成员函数里需要把当前类对象包装为智能指针传递出一个指向自身的share_ptr时。在这种情况下类就需要通过继承enable_shared_from_this,通过父类的成员函数shared_from_this来获取指向该类的智能指针。
HappenLee
2020-07-13
1.5K0
C++雾中风景番外篇4:GCC升级二三事
这个我感觉是历史的遗留问题了,从C++11开始就不支持字符串字面量后面直接连接变量名,GCC 4.8.2应该是没有支持该编译检查,所以后续升级8.2的时候报了类似的错误。
HappenLee
2020-02-24
7190
C++雾中风景13:volatile解惑
volatile这个单词在英文之中的意思是:易变的,不稳定的的含义。所以顾名思义,一旦变量通过了volatile关键词修饰之后,说明变量是易变的和不稳定的。而C++之中最大的误会就是认为volatile关键词与并发编程有关,至于为何会引起这样的误会呢?笔者觉得罪魁祸首可能是下面的原因:
HappenLee
2019-03-19
6641
C++雾中风景3:const用法的小结
const关键字,翻译成中文是常量,常数的意思。所以在绝大多数场合之中,const是来定义常量的,定义常量也是好的编程习惯。在C类语言之中,定义常量通常会使用宏定义或const关键字来定义常量。二者的区别就在于:
HappenLee
2018-09-05
7460
C++雾中风景7:闭包
闭包(closure)是函数式编程的重要的语法结构。 闭包的概念其实很简单,一言以蔽之:闭包是带有上下文的函数。说白了,就是有状态的函数。也就是说一个局部变量n,在被函数对象给“封闭”在函数里,从而能把值保存了下来,让函数能够保存状态。(其实本质上就是一个类,用纯粹面向对象的方式理解,函数也是一个对象)
HappenLee
2018-09-05
8550
C++雾中风景1:友元类与面向对象
开篇先简单介绍一下友元这个概念吧。 在C++之中,类的友元函数是定义在类外部,但它有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类。
HappenLee
2018-09-05
7460
数据分区------《Designing Data-Intensive Applications》读书笔记9
分区与副本是很容易混淆的概念,我们这里离清一下两者。 数据分区的每个副本可以存储在多个节点上。这意味着,即使每个记录恰好属于一个分区,它仍然可以存储在几个不同的节点上进行容错。
HappenLee
2018-09-05
5400
流式计算与计算抽象化------《Designing Data-Intensive Applications》读书笔记15
MapReduce作业是独立于其他作业,输入与输出目录通过分布式存储系统串联。MapReduce作业的存在相互的依赖关系,前后相互依赖的作业需要将后面作业的输入目录配置为与之前作业的输出目录,工作流调度器必须在第一个作业完成后才开始第二个作业。
HappenLee
2018-09-05
5460
线性一致性与全序广播------《Designing Data-Intensive Applications》读书笔记12
大多数分布式数据库至少提供了最终一致性,这意味着如果停止对数据库的写操作并等待一段时间,最终所有读请求将返回相同的值。但是,这是一个非常弱的一致性保证,所谓的一段时间并不确定。如果写入一个值,然后立即读取它,就不能保证读取到刚才写入的值。
HappenLee
2018-09-05
1.1K0
C++雾中风景10:聊聊左值,纯右值与将亡值
左值(lvalue)和右值(rvalue)是C++类型系统之中的基础概念,我们不需要了解这些基础概念,同样也能写出代码。但是如果没有弄清左右值的概念,对于许多C++高级特性的探索会一叶障目,所以笔者尝试总结一下自己对于左值与右值的理解。
HappenLee
2018-09-05
9150
C++雾中风景8:Lambda表达式
Lambda表达式是函数式编程的重要的语法结构。 Lambda 表达式(lambda expression)说起来很简单,就是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包。(注意和数学传统意义上的不同)。(本质上Lambda表达式就是将函数作为是一个匿名对象进行操作)
HappenLee
2018-09-05
6100
分布式系统的一致性算法------《Designing Data-Intensive Applications》读书笔记13
原子提交防止了数据库处于半更新的状态,这对于需要满足多对象事务和维护次级索引的数据库尤为重要。每个次级索引都是从主数据中分离出来的数据结构,因此,如果修改某些数据,也需要在次级索引中做出相应的更改。通过原子性保证二级索引能够与原数据保持一致。
HappenLee
2018-09-05
5210
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档