MapReduce中迭代查询的最优化程序员
摘要:数据库
提出术语OptIQ:在分布式环境中迭代查询的一种查询优化的方法。(全自动化的)框架
用到的方法:view materialization and incremental view evaluation.分布式
物化视图和增量视图评估函数
做用:减小了不一样迭代过程当中的重复计算oop
1. INTRODUCTION性能
几种新的技术:优化
Spark Haloop REX 查询优化都不是自动化和框架化的,须要程序员指出那些数据须要重用以及手动的指定那些数据如何存储。lua
OptIQ:为辨别迭代查询中出现的重复计算提出了一个整体框架,应用了在传统数据库领域中的物化视图和增量试图评估和编译器领域中的程序分析和转换的技术。spa
流程:1、把迭代查询分为变和不变的视图,而且不变的视图将会用到下次的迭代过程当中去。
二、经过跳过评估那些收敛的元组来增量化变化的视图。
二、为迭代查询定义SQL语句
包括三部分
Local table 保存当前的迭代中的数据 存在本地磁盘中 let语句
Global table 保存上一次迭代的数据 存在分布式文件系统。set语句
判断是否收敛时跟新表中(update table)的全部的元组都要进行比较。
R和S是输入表,schema(R)表示R表的属性,T(list)表示T表中有一个list属性,表示一个命题公式。
投影操做(projection)投影输入表中特殊的属性集
选择操做(selection)选择知足输入表中知足的元组
链接操做(join)提取两个输入表的叉积知足^2的元组
Group-by操做重组元组和计算汇集函数
PageRank:
三个表,定义的查询语句以下
Src当前节点 Dest 目的节点 Score至关于PR值 count表示节点的出度
K-means:
两个表
Point数据点,Centro汇集的中心点
定义的语句
3、查询优化:
view materialization and incremental view evaluation.(物化视图和增量视图评估)
物化视图重用了未修改属性子查询的结果
增量视图评估重用了未修改元组的结果
为了进行物化视图-------表分解
把表分解成变和不变的视图,重复使用不变的视图。
为了进行自动的增量--------增量表(delta table)
根据收敛条件减小元组数目。
OptIQ概述图
如何物化视图
一、把update table 分解成变和不变的视图,重写迭代查询语句,把update table 用变化的视图表示(变和不变的视图有一个相同的视图,最后能够用来进行join操做)
二、物化查询过程当中不变的视图,重写和简化迭代过程重要使用的不变视图
如PageRank
将Graph(src,dest,score)分解成 VI(src,score)和IT(src,dest)
子查询的提高(在上面的基础上继续优化)如利用分解的表在造成另一个能够物化的表IT_count
IT_Count = select IT.src,IT.dest,Count.count
from IT, Count
where IT.src = Count.src.
VT表和score表能够相互替换
loop invariant code motion(循环不变量)
物化视图最后优化的语句
Automatic incrementalization
一、跟新操做Update operations
Update操做执行的频率大于Insert和delete操做
二、检测增量表Detecting delta tables
三、获得增量查询Deriving incremental queries
刚开始比较常规的语句
T是update table,q(T)至关于查询语句,φ(ΔT )是收敛条件
set T = q(T ⊕ ΔT )
假设:q(T ⊕ ΔT) = q(T) ⊗ q(ΔT ).
Dscore是score表的一个增量表
研究汇集函数中的增量计算,可以很大程度的提升性能
Sum函数
Count函数和sum函数有相同的分布规律,average函数能够分解为count函数和sum函数
Max和min函数
加了incrementalization以后的语句:
实验
Hadoop和spark上使用OptIQ
PageRank
反应时间和迭代次数减小
K-means
View并无增长效率,优化过程当中磁盘读写增长了。
物化视图: 物化视图(Meterialized View)提供了强大的功能,能够用于预先计算,而且保存表链接或者表汇集等耗时比较多的操做的结果,这样子,在执行查询的时候,就能够避免这些耗时的操做,从而快速的获得结果。
空间换时间
如何可以保证IO开销,即消耗空间换取的时间能不能抵消掉读磁盘产生的IO开销。