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開銷。