Vectorization vs. Compilation in Query Execution 论文阅读笔记

2023-10-17 23:18

本文主要是介绍Vectorization vs. Compilation in Query Execution 论文阅读笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Vectorization vs. Compilation in Query Execution 论文阅读笔记

Projection

Vectorization

对于复杂表达式,会产生很多中间列,多余的 load/store

Compilation

直接把复杂表达式写成一条,无需按表达式树执行,并且省去了多余的 load/store

Selection (conjunctive)

通常 branchless 比 branch 要快

Vectorization

把 where expression 拆开对单个列做 filter,这时候如果存储模型是 column store,对单个 column 的 where filter 就非常友好,然后把 selection vector 做成 chain 调用,一步步向下传递。(参考论文中 Algorithm2

A vectorized conjunction is implemented by chaining selection primitives with the output selection vector of the previous one being the input selection vector of the next one, working on a tightening subset of the original vectors, evaluating this conjunction lazily only on those elements for which the previous conditions passed.

Compilation

对每一个 tuple 做完整的 where filter,可以 branchless

Join

Vectorization

在这里插入图片描述

流程

 
0. 对原表做 permute-and-rank,得到 table1bucketbucket 中记录 table1 的 offset;next 中记录所在 bucket chain 的下一个

在这里插入图片描述

  1. 对所有 probe-table 的 key 做 hash(多个 key 做抑或(^));然后调用 ht_lookup_initial() 得到 PosMatch,此时 Pos 的值是每个 key 对应 bucket chain 的 head
  • Pos:长度与 table2 相同,表示该 table2 key 可能与 table1 对应位置 key 相同。(比如 Pos[0]=4 意味着 table2[0] 可能等于 table1[4]
  • Match:需要被检测的 Pos 的位置。(比如 Match[2]=3 意味着 Pos[3] 需要被检测)

在这里插入图片描述

  1. 检测这些 key,如果相同了,则 Check 结果为0;然后选择非0作为 Match(思路是:已经成功的地方 Pos 就不改变了,比较失败的顺着所在 bucket 继续向下比较)

在这里插入图片描述

  1. 顺着 bucket 刷新 PosMatch(比如 Pos[1]=1 所在 bucket 还有 next[1]=2;而 Pos[3]=4 所在 bucket 没有元素了,即 next[4]=0

在这里插入图片描述

  1. 继续步骤 2-3 直到 Match 为空

在这里插入图片描述

  1. 将结果导出做 concatenate

在这里插入图片描述

 

Compilation

  • pipeline prefetch, outstanding load
  • Vectorization 在 row-store 和 column-store 上的性能区别(考虑到 selectivity)
  • cache/TLB miss

Reference

  • Just-in-time Compilation in Vectorized Query Execution

这篇关于Vectorization vs. Compilation in Query Execution 论文阅读笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/228603

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit