数据库内核面试中我不会的问题(4)

这是关于数据库内核面试的一次深刻体验,涵盖了执行器架构、MPP架构、数据处理方式和查询优化等内容。面试中讨论了火山模型、物化模型和向量化模型的优缺点,批处理与流处理的适用场景,以及MPP架构的特性。还涉及了filter算子下推、GROUP BY与子查询的转换、LEFT JOIN的谓词下推问题,以及大文件去重的伪代码设计。尽管存在挑战,但这次面试深入探讨了数据库核心技术。
摘要由CSDN通过智能技术生成

真的是面的最难的一次了,,确实全是数据库内核的,确实全是执行器和查询优化相关的,但是说出来就是不会啊,这种自己在擅长的方面被人吊起来锤的感觉让人很难过。

我也没有完全记住他面试中问了我哪些问题,先列出来这几个吧。

1.执行器的架构有哪几种?

1.最为常见的是传统的火山模型,以及一系列的优化,比如说pull模型改为push模型的优化。

优点:简单,每个 Operator 可以单独实现逻辑。

缺点:查询树调用next()接口次数太多,并且一次只取一条数据,CPU 执行效率低;而 Joins, Subqueries, Order By 等操作经常会阻塞。

2.然后是Materialization,物化模型,每个算子一次处理所有的输入,处理完之后将所有结果一次性输出。

物化模型更适合OLTP负载,这些查询每次只访问小规模的数据,只需要少量的函数调用。

3.向量化模型,是火山模型和物化模型的折衷。

向量化模型比较适合 OLAP 查询,因为其大大减少了每个 operator 的调用次数,也就简单减少了虚函数的调用。

2.执行器算子之间,使用批量传递数据比起按行传递数据的好处有哪些?坏处有哪些?

这个我确实也不知道正确答案,我搜到的坏处是,使用批量处理会降低在批处理期间的交互性。

但是我觉得这个比起来批处理带来的好处,显得也不是特别明显了。

  • 批处理适用于对大量静态数据进行处理,需要等到整个分析处理结束才能获得结果(即获得最终分析处理结果的延迟较大)。一般应用于实时性要求不高,离线计算的场景下。
  • 流处理适用于对每个新到达的(动态的)数据元素(Data Element)或者一个比较小的时间窗口内的数据元素进行计算,数据上的计算或者分析处理相对来讲是比较简单的,因此完成分析处理的时间非常迅速。一般应用于时效性要求比较高的场景。

这么来看的话,面试官应该问的是两种处理方式的处理场景的差异。

所以我应该回答的是批处理应对实时性要求比较高的场景,处理效果是比不上行传递处理的。

3.讲一下MPP架构?

(当时谈到了我们这边的数据库整体架构,我说我们这边是上层多个cn,下层多个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aiky哇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值