
查询优化技术
文章平均质量分 94
立君在学习
从啥也不会到啥也会
展开
-
从Volcano模型看Presto执行计划
关系代数是关系型数据库查询语言的基础,关系数据库的对外接口是SQL语句,所以SQL语句中的DML、DQL基于关系代数实现了关系的运算。关系模型由关系数据结构关系操作集合和关系完整性约束三部分组成。传统集合运算符。并UNION、交INTERSECTION、差DIFFERENCE、积EXTENDED CARTESIAN PRODUCT专门的关系运算符。选择SELECT、投影PROJECT、连接JOIN、除DIVEDE辅助运算符。包括算术比较符和逻辑运算符关系扩展运算符。原创 2024-05-07 10:48:58 · 1262 阅读 · 0 评论 -
Join优化规则及应用层BI系统实践
查询优化器在数据库中一个重要且复杂的组件,它再一定程度上决定了数据库的性能。如上图,优化器接收一个被parser解析的逻辑算子的代数表达式树,优化器由一些从逻辑表达式树到最优等价物理表达式树的映射组成。换言之,优化器对算子重排序并选择实现算法。数据库查询优化技术主要包括查询重用技术、查询重写规则、查询算法优化技术、并行查询优化技术、分布式查询优化技术及其他方面(如框架结构)的优化技术,这6项技术构成了一个“广义的数据库查询优化”的概念。原创 2024-05-07 10:33:58 · 922 阅读 · 0 评论 -
(论文阅读-优化器)Selectivity Estimation Without the Attribute Value Independence Assumption
一个包含相同relation中多个属性的查询结果size取决于这些属性的联合数据分布joint data distribution,即,所有属性值组合的频次。为了简化对属性大小的估计,大多数商业系统会假设属性值是互相独立的,并仅针对独立的属性来维护统计数据(通常是直方图)。在实际场景中,这个假设几乎都是错误的,因此估计的结果会非常不准确。在本文中,我们针对高效近似(多维)联合数据分布提出了两个主要可选方案。使用多维直方图使用基于线性代数的奇异值分解(SVD)技术。原创 2024-05-06 22:03:43 · 715 阅读 · 0 评论 -
(论文阅读-优化器)Selectivity Estimation using Probabilistic Models
对于涉及多个属性选择和多个关系连接的复杂查询,其结果大小的估计是数据库查询处理中一项困难而又基本的任务。它出现在基于成本的查询优化、查询分析和近似查询回答中。在本文中,我们展示了如何有效地使用概率图形模型作为跨多个关系的多个属性联合频率分布的精确和紧凑的逼近来完成这项任务。概率关系模型(Probabilistic Relational Models, PRMs)是最近的一项发展,它将图形统计模型(如贝叶斯网络)扩展到关系领域。它们表示表中属性之间以及跨外键连接的属性之间的统计依赖关系。原创 2024-05-06 22:00:17 · 909 阅读 · 0 评论 -
(论文阅读-优化器)Orca: A Modular Query Optimizer Architecture for Big Data
注意group2的best plan需要对T2按照T2.b进行hash-distribute,由于T2原始数据是按照T2.a进行hash-distributed的,而group1的best plan是简单的scan,因为T1已经在T1.a进行了hash-distributed。Group的成员,被称为group expressions,会用不同的逻辑方式(例如,不同的join orders)来达成这个group的目标。目前,这些努力只支持SQL标准特性的一个子集,而且它们的优化仅限于基于规则的。原创 2024-05-06 21:46:53 · 1298 阅读 · 0 评论 -
(论文阅读-优化器)EFFICIENCY IN THE COLUMBIA DATABASE QUERY OPTIMIZER
查询优化是一个数据库系统能够获得重要性能收益的领域。现代数据库应用通常要求优化器具有高可扩展性和效率。Columbia基于Cascades优化框架的自顶向下优化算法,通过对搜索空间结构和搜索算法的精心重构,简化了自顶向下优化器的设计。原创 2024-05-06 11:07:47 · 1375 阅读 · 0 评论 -
(论文阅读-优化器)A Cost Model for SPARK SQL
本文我们为Spark SQL提出了一个新的cost model。这个cost model涵盖了广义的Projection、Selection、Join(GPSJ)查询。cost model考虑了网络和IO成本,以及最相关的CPU成本。执行成本是从Spark生成的物理执行计划开始计算的。Spark在执行GPSJ查询时采用的操作集合是基于集群和应用参数以及一组数据库统计数据来进行代价的分析建模的。原创 2024-05-05 23:53:48 · 1209 阅读 · 2 评论 -
(论文阅读-多目标优化器)Multi-Objective Parametric Query Optimization
经典查询优化根据一个成本度量cost metric来比较查询计划,并将每个计划与一个固定的成本值关联起来。在本文中,我们引入了多目标参数查询优化(Multi-Objective Parametric Query, MPQ)问题,该问题根据多个成本度量比较查询计划,并将给定计划在指定度量上的成本建模为一个依赖于多个参数的函数。例如,一个实例的成本指标可以包括执行时间或货币费用;参数可以表示在优化时未指定的查询谓词的选择性。原创 2024-05-05 23:35:42 · 1490 阅读 · 2 评论 -
(论文阅读-优化器)Volcano-An Extensible and Parallel Query Evaluation System
火山模型Volcano在数据库查询系统的设计中,为查询优化、并行执行和资源收集提供了丰富的环境。火山模型在代数运算符之间使用了一个标准接口,允许简单地添加新运算符和实现运算符。火山模型极具扩展性,它对于新的算子、算法、数据类型和限定类型的方法都提供了极大的扩展性。火山模型包含两个新颖的元操作符:choose-plan元操作符支持动态的查询评估计划,可以通过延迟执行进行优化。exchange-plan元操作符支持分布式数据集内部的操作符并行,以及横向和纵向的操作符并行。原创 2024-05-05 23:26:54 · 1011 阅读 · 0 评论 -
(论文阅读-向量化)基于SIMD和缓存友好的结构体数组排序算法
摘要本文描述了一个通过高效利用SIMD指令和当今处理器缓存内存的,用于对一个数据结构进行排序的新算法。当前,通过SIMD指令实现的多路归并排序已经被作为一个对于int值排序的高效内存排序算法使用了。在使用SIMD指令对数组结构进行排序时,一个常用的方法是首先将每行记录的key和index打包成为一个int值,使用SIMD指令对kv对进行排序,然后基于有序的kv对重组数据行。这种方法可以有效地使用SIMD指令因为它在打包int值时对kv对排序,因此它可以使用高效的、基于SIMD的对int值的多路归并排序实原创 2022-03-29 21:18:30 · 2149 阅读 · 4 评论 -
使用SIMD指令实现数据库运算(论文阅读笔记)
摘要现代cpu的指令允许在多个数据元素上并行执行基本操作。这些指令称为SIMD指令,因为它们将一条指令应用于多个数据元素。SIMD技术最初被内置到商业处理器中,以加速多媒体应用程序的性能。SIMD指令为数据库引擎的设计和实现提供了新的机会。我们研究了数据库上下文中的各种操作,并展示了如何使用SIMD指令加速操作的内部循环。使用SIMD指令有两个直接的性能好处:它允许一定程度的并行,这样多个操作就可以被一次执行。它通常还可以消除条件分支指令,来减少分支预测失败。本文中我们考虑了最重要的数据库操作,包括原创 2022-03-28 20:05:41 · 3246 阅读 · 2 评论