content
- 理论基础
- 半连接优化算法
- 直接连接优化算法
理论基础
▍理解
查询优化主要是说查询分解(查询重写)和数据本地化(片段优化); 存取优化主要是考虑的是在实际物理层面(场地)的优化。
▍场地分工
- 查询场地:发出查询命令和存储最终查询结果的场地(注意是两个方面)
- 源数据场地:需要访问的数据(及副本)所在的场地(可能不止一个)
- 执行场地:查询操作实际执行所在的场地
▍优化目标
- 广域网(Wide Area Network,WAN):主要考虑通信开销
- 局域网(Local Area Network,LAN):都要考虑(Commuicate、IO、CPU)
▍指标
- 总时间(Total Time):所有组件时间的和
- 响应时间(Response Time):从查询开始到结束所用的时间
总时间 = 2 * 启动时间 + 单位传输时间 * (x + y)
响应时间 = 启动时间 + 单位传输时间 * max(x, y)
▍代价模型
Total Cost = com + IO + cpu
▍参数
Card(R) 关系R的基(所包含元组的个数)
Length(A) 属性A的长度(字节数)
Length(R) 关系R的长度(字节数)
Size(R) 关系R的大小(Card(R) * Length(R))
Val(A) 属性A的特征值(关系R中属性A的不同的属性值的个数)
Dom(A) 属性A的值域
Max(A)/Min(A) 属性A的最大值/最小值
半连接优化算法
▍典例
首先明确:EMP位于场地1;DEPT位于场地2;查询场地为场地2(发出命令+存储结果)
策略1------将EMP{Eno, Ename}拉取到场地2进行连接、操作(执行场地在S2)
COST = [Length(Eno) + Length(Ename)] * Card(EMP)
= (4 + 35) * 10000 = 390000
策略2------将DEPT{Dname, Eno}拉取到场地1执行,再将结果Res{Ename, Dname}拉回到场地2
COST1 = [Length(Dname) + Length(Eno)] * Card(DEPT) = (35 + 4) * 100 = 3900
COST2 = [Length(Ename) + Lenghth(Dname)] * Card(Res) = (35 + 35) * 100 = 7000
COST = COST1 + COST2 = 10900
策略3------将DEPT{Eno}拉取到场地1实现半连接,中间结果集Res再拉取到场地2进行全连接,然后投影得到最终结果
COST1 = Length(Eno) * Card(DEPT) = 4 * 100 = 400
COST2 = [Length(Eno) + Length(Ename)] * Card(Res) = (4 + 35) * 100 = 3900
COST = COST1 + COST2 = 4300
▍半连接优化算法
输入信息:位于不同场地的两个关系R和S(假设R的尺寸大于S)
输出信息:实现R
∞
∞
∞S(R.A = S.B)
算法步骤(🌟重点 + 理解) :
- 在S场地上计算S‘ = ЛB(S)
- 传送S‘到R场地
- 在R场地计算R’ = R ∞ ∞ ∞ S‘ = R ∝ ∝ ∝ S
- 将R‘传回S场地
- 在S场地计算R’ ∞ ∞ ∞ S = (R ∝ ∝ ∝ S) ∞ ∞ ∞ S = R ∞ ∞ ∞ S
▍优化前后代价比较
假设: 关系R和S在不同的场地;c0为启动代价,c1为单位传输代价
优化前: C = c0 + c1 * (Length(R) * Card(R)) = c0 + c1 * Size(R)
优化后: C = [c0 + c1 * Length(S’) * Card(S‘)] + [c0 + c1 * (Length(R‘) * Card(R‘)]
= 2c0 + c1 * (Size(S‘) + Size(R‘))
直接连接优化算法
▍半连接的不足
半连接优化算法的本质是,通过缩减场地之间传送的关系的数据量,来减少整个系统的传输代价。
那么代价是什么呢?增加了系统的局部处理代价。
▍使用场景
- 取决于数据传输和局部处理的相对费用:
- 如果传输花费是主要的,则采用半连接
- 如果本地话费是主要的,则采用直接连接
▍直接连接算法
- 站点依赖算法
- 分片和复制算法
- Hash划分算法
M o r e More More