Join Reorder优化 - 论文摘要
Query Simplification: Graceful Degradation for Join-Order Optimization
这篇的related work可以参考,列的比较全面,
Query图分为下面几种,
Graph Simplification算法,
Heuristic
Optimization of Large Join Queries: Combining Heuristic and Combinatorial Techniques
这篇文章的主要观点,结合Combinatorial和Heuristic
Combinatorial意思是组合
组合优化问题就是,在状态空间中寻找一个最优的状态,状态的cost由cost function来决定
Combinatorial优化算法主要分为两种,
Iterative算法,这里主要是指repeat,不断随机重试,以找到更优解
退火算法,
Heuristic算法,
首先,Augmentation Heuristic
初始只有第一张关系表,
然后一张张往上加,加哪一个取决于chooseNext函数
下面给出一些可以用作chooseNext的指标,论文说实验结果是3的效果最好
KBZ Heuristic
算法分为三个部分,
R,给定一个rooted tree,给出optimal join ordering
T,给定一个join tree,遍历所有的root,用R找出每个rooted tree的optimal
G,给定一个join graph,可能cyclic,找出一个spanning tree(生成树),调用T
Local Improvement
分而治之,表数太多的时候,穷举的代价很高,但是切分成小的cluster,就会简单许多
同样这样也无法得到最优解,cluster可以重合
最后如果把两个技术结合起来?
II和SA就是两种基本的Combinatorial方法,
SAA,SAK分别把augmentation和KBZ两种Heuristic方法用于SA,用于产生一个较优的initial state
IAI,IKI,用Heuristic的方法产生每一轮迭代的initial state
IAL,加入local improvement
AGI,KBI,先用Heuristic产生state,再用Iterative去优化
A New Heuristic for Optimizing Large Queries
查询优化的目的是避免worst plans,而不是找到best plan,在这样的假设下,启发式算法可能会达到比较好的效果
当前基于combinatorial优化技术(比如iterative或退火)的cost-based searching,已经取得了一定的效果,但是当前的方法并没有利用queries中inherent的semantic information
所以基本的思路就是,在当前cost-based searching的基础上利用semantic information,从而提出Goo算法,Greedy Operator Ordering
这是一种,Greedy的bottom up算法
Node关键属性是Size,Edge关键属性是Selectivity
Goo的目的是逐渐合并各个node,
合并的标准是,每次都是找产生中间结果最小的edge进行合并
很明显,Goo产生的肯定不是最优解
一般的思路都是,基于启发式的结果,进行进一步的调整和优化,找到更优解,
比如,增加一组rules,bottom up的试图apply这些rules得到更好的结果
Polynomial Heuristics for Query Optimization
One line of work adapts randomized techniques and combinatorial heuristics to address this problem.
These techniques consider the space of plans as points in a high-dimensional space, that can be “traversed” via transformations (e.g., join commutativity and
associativity).
Reference [13] surveys different such strategies, including iterative improvement, simulated annealing, and genetic algorithms.
These techniques can be seen as heuristic variations of transformation-based exhaustive enumeration algorithms.
Another line of work implements heuristic variations of dynamic programming. These approaches include reference [14] (which performs dynamic programming for a
subset of tables, picks the best k-table join, replaces it with a new “virtual” table, and repeats the procedure until all tables are part of the final plan),
reference [15] (which simplifies an initial join graph by disallowing non-promising join edges and then exhaustively searches the resulting, simpler problem using [8]), and references [16], [17] (which greedily build join trees one table at a time).
本文首先给出一个分类,比较新颖,
启发式是优化的基本技术,分为对于Transformation-based技术的启发式优化,和动态规划的启发式优化
其中Heuristic DP算法都是基于graph的,可以采用iterative的方式,根据cost等信息降低搜索空间等,或者用Greedy算法
但是文中说除了greedy的方案,其他的性能都太差
所以文中给出一个通用的Greedy算法框架,ERM
P包含所有Plan,目的就是不断的merge plan,最终只剩下一个plan,这个就是Greedy算法的目的,参考GOO
算法叫ERM,分为3个阶段,
首先要找出可以用于merge的所有plan,关键是Valid函数,不同要求下,valid定义不一样
边上的例子,给出linear tree和bushy tree的差异
第二个阶段是Ranking,即Maximizes函数,
如果挑出合并哪两个plan是最优的,
有如下函数可以选择,本文提出MinSize,考虑tuples本身的长度,效果更好些
第三个阶段Merging,即merge函数
简单的直接用join链接两个plan即可
但是merge可以更加flexible,
文中用Swith-HJ,考虑hashjoin的join顺序,Swith-Idx,考虑index所带来的影响
还提出Push,Pull两种方式,
Push,
过程简单的看下图,要把P2 push到P1的R3上,而不是直接的join链接
Push的好处,修正Greedy的局部限制
同时还有Pull,
以及把Push和Pull加入算法的BSizePP,
后续文中还讨论了,Beyond Join Reordering,包含Group-by,Semi-join,Outer-join等
Iterative
Iterative Dynamic Programming: A New Class of Query Optimization Algorithms
本文提出的IDP算法,算是DP的Heuristic优化,
先看下标准的DP和Greedy算法是怎么样的
看下两者结合的算法,
IDP1
如果在有限的资源,内存,有限的时间里面,去做DP
比如当前的内存只够做k-way的,做到k+1 way就crash了
给出的方法是,做到k-way后,用Greedy算法直接挑一个最优的plan,继续,其他的都不考虑
算法中,红色部分是DP,蓝色部分是Greedy,这里注意optPlan仅仅保留P,最优的plan
实际看个例子,k=3
IDP2
先Greedy后DP的算法,
算法如下,
先用Greedy算法找出K个左右tables的block,再用DP优化这个block
然后把block放回todo里面,继续这个流程,直到最终得到一个plan
这里,算法存在变体,
standard和balanced,是否限制k的大小,k太大会影响最终plan的优化效果,
比如,对于下面的例子,最优plan是a
但是如果k=3,那么选中的子plan是b,那么最终只会产生右边的两个plan
如果k=2,就能生成最优的plan
bestPlan和bestRow,是否仅仅保留一个最优的plan
Join Reorder优化 - 论文摘要的更多相关文章
- CVPR2020无人驾驶论文摘要
CVPR2020无人驾驶论文摘要 无人 导读/ Starsky是一种比较独特的方案.它是在高速上自动驾驶,第一公里最后一公里采用远程驾驶的模式,Starsky的卡车可以由人类远程操作.没有使用较为昂贵 ...
- Neural ODE相关论文摘要翻译
*****仅供个人学习记录***** Neural Ordinary Differential Equations[2019] 论文地址:[1806.07366] Neural Ordinary Di ...
- 干货:VLDB论文摘要-阿里技术突破性创新
阿里技术突破性创新 世界顶级大规模数据处理分析管理会议VLDB(VERY LARGE DATA BASE)于9月1日至5日在杭州举办,该会议也是也是大数据云计算领域的盛会,阿里巴巴两个团队在这个会议上 ...
- MySQL分页优化中的“INNER JOIN方式优化分页算法”到底在什么情况下会生效?
本文出处:http://www.cnblogs.com/wy123/p/7003157.html 最近无意间看到一个MySQL分页优化的测试案例,并没有非常具体地说明测试场景的情况下,给出了一种经典的 ...
- Mysql-巧用join来优化sql
0. 准备相关表来进行接下来的测试 相关建表语句请看:https://github.com/YangBaohust/my_sql user1表,取经组 +----+-----------+------ ...
- Mysql查询优化器之关于JOIN的优化
连接查询应该是比较常用的查询方式,连接查询大致分为:内连接.外连接(左连接和右连接).自然连接 下图展示了 LEFT JOIN.RIGHT JOIN.INNER JOIN.OUTER JOIN 相关的 ...
- spark join broadcast优化
在大量数据中对一些字段进行关联. 举例 ipTable:需要进行关联的几千条ip数据(70k) hist:历史数据(百亿级别) 直接join将会对所有数据进行shuffle,需要大量的io操作,相同的 ...
- Java通过Fork/Join来优化并行计算
Java代码: package Threads; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.Recur ...
- MR 图像分割 相关论文摘要整理
<多分辨率水平集算法的乳腺MR图像分割> 针对乳腺 MR 图像信息量大.灰度不均匀.边界模糊.难分割的特点, 提出一种多分辨率水平集乳腺 MR图像分割算法. 算法的核心是首先利用小波多尺度 ...
随机推荐
- 如何查看服务器对外的IP
开发的时候经常会被IP受限,这是由于数据源方限制了IP,所以需要报备一下IP白名单,怎么查看自己的网络对外的IP呢? 用下面的方式最为准确: Windows上操作: 直接再浏览器访问 http://h ...
- Windows下搭建TensorFlow的GPU版本
1.下载python3.5.2版本并安装(必须是3.5版本,而且3.5后不带字母的版本) 2.使用下面的地址下载tensorflow的GPU版本 http://www.lfd.uci.edu/~goh ...
- ningx配置本地https环境
由于项目改成了https访问,所以本地开发的时候也要通过https验证,避免页面发送http请求. 例如原来是这样访问:http://192.168.88.88:8080/ 或 http://loca ...
- Python 软件安装
安装Python解释器 Python目前已支持所有主流操作系统,在Linux,Unix,Mac系统上自带Python环境,在Windows系统上需要安装一下,超简单 打开官网https://www.p ...
- eclipse项目结构目录
文章:eclipse web 项目目录结构 地址:https://blog.csdn.net/Alan_Wdd/article/details/90514928 eclipse web 项目目录结构 ...
- Cisco网络模拟器踩坑记录
1.在我们新建一个拓扑图的时候,选择设备之间的连线种类有时会导致线路不通的情况(两个端口上为红色点)这时候建议拆除这条线后选择闪电标记 的万能线帮助我们自动创建连线(这时就能根据它显示的线条种类得知应 ...
- The Shortest Statement(Educational Codeforces Round 51 (Rated for Div.2)+最短路+LCA+最小生成树)
题目链接 传送门 题面 题意 给你一张有\(n\)个点\(m\)条边的联通图(其中\(m\leq n+20)\),\(q\)次查询,每次询问\(u\)与\(v\)之间的最短路. 思路 由于边数最多只比 ...
- 《exception》第九次团队作业:Beta冲刺与验收准备(第一天)
一.项目基本介绍 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 Exception 作业学习目标 1.掌握软件黑盒测试技术:2.学会编制软件项目 ...
- 项目Beta冲刺(1/7)(追光的人)(2019.5.23)
所属课程 软件工程1916 作业要求 Beta冲刺博客汇总 团队名称 追光的人 作业目标 描述Beta冲刺每日的scrum和PM报告两部分 队员学号 队员博客 221600219 小墨 https:/ ...
- delete properties inside object