数据库课程之分布式数据库查询优化(三)

一、概述

1.1 代价估算

在传统的集中型数据库中:
查询总代价=CPU代价+I/O代价
分布式数据库中:
查询总代价=本地代价(CPU代价+I/O代价)+通信代价
响应时间=局部处理时间+通信时间(和并行处理程度有关)
其中上述通信代价可用如下公式衡量:

TC(X)=C0 + C1 * X`
C0: 通信初始化时间
C1:数据传输率(单位:秒 / bit)
X:传输的数据量(单位:bit)

远程通信网通常是以减小通信代价为主 ;而高速局域网通常以减小局部处理时间为主。

1.2 优化的必要性

通过一个例子来看看数据库优化的必要性。存在这样一个分布式教学数据库:

S(Sno, Sn, Age, Sex)10000个元组,存放在A站点;
SC(Sno, Cno, Grade)1000000个元组,存放A站点;
C(Cno, Cn, Teacher) 100000个元组,存放在B站点;

其中S表示学生信息,C表示课程信息,SC表示学生选课信息。假设每个元组的长度为100 bit,通信系统传 输速率为10000bit / 秒,通信延迟时间为1秒。根据上述条件查询选修‘Maths’课的男生的学号和姓名。查询语句一般会这样写:

SELECT Sno, Sn FROM S, SC, C 
WHERE S.Sno = SC.Sno 
AND SC.Cno = C.Cno 
AND Sex = ‘M’
AND Cn = ‘Maths’

再次之前我们还应该知道代价估算的计算公式:

T = 传输延迟时间 + 传输数据量 / 数据传输速率
= 传输次数 * 1 + 传输的bit数 / 10000

可以有如下六种不同的方案查询,选择不同的方法查询时间上会相差很大,由此可见做查询优化是很有必要的。







二、查询优化基础

关系代数表达式可以表示出各操作的执行顺序, 可以利用等价变换,实现查询优化。关系代数所有操作数都是关系,计算结果也是关系。关系代数有九种常见操作符:其中2个(选择和投影)一元操作符,7个二元操作符。

一元运算:选择(σ),投影(π)
二元运算:并(∪),交(∩),差(-),除 (÷),笛卡儿积(x ),连接(∞),半连接 (∝)

关系代数中的运算符也可以分为集合运算符和专门的关系运算符,如下图:


按照1.2中的例子,执行如下查询语句查询选择 c1 课程的学生:

Select Sn
from s,sc
Where s.Sno=sc.Sno and Cno=‘c1’

对于上述查询语句,在关系代数中可以有如下三种表达形式:



对一个关系代数表达式表示的查询进行语法分析,可以得到一棵操作树。树的叶子是已知的关系,树的各个节点是关系代数操作符,树的根是查询结果。


三、查询的分类和查询处理步骤

3.1 查询的分类

分布式数据库中的查询分为三类:局部查询、远程查询、全局查询。

  • 局部查询:只涉及本地站点的数据
    局部查询中的优化策略和集中式数据库类似。主要从下面四个方面做起:
    1、先做选择和投影。 先操作使数据量变小的操作,后期的遍历效率也会高。
    2、在执行连接前对数据库数据进行适当的预处理,入队数据按连接属性排序和在连接属性上简历索引,以减少扫描。
    3、将一些操作组合起来,减少扫描次数。如从左边往右边连接,扫描次数可能是n+m * n;从右边往左边连接扫面次数可能是m * n+m,此时比较两者的大小,找出最佳组合方式。
    4、找出公共表达式。可按照 2 x 3 + 2 x 4 = 2 x (3 + 4) 这个做类比,明显后者运算步骤少。
  • 远程查询:只涉及远程站点的数据
    优化策略与局部查询基本类似。但是在多副本的情况下,需要注意如果有多个远程站点的数据都满足查询数据,需要选择通信代价比较低的站点。
  • 全局查询:查询涉及多个站点的数据
    全局查询中主要需要做好以下四种操作。
    1、具体化,即为全局查询选定片段的副本。
    2、确定操作次序,主要是确定连接和并运算的次序。
    3、确定操作的执行方法,将操作组合,选定访问路径、处理方法,其中重点是连接的处理。
    4、确定执行站点。

3.2 查询处理步骤

  1. 查询分解:把查询问题转换成定义在全局关系上的关系代数表达式或SQL语句。
  2. 数据本地化:把一个全局关系上的查询,转化为对片段的查询。涉及分片模式、分配模式。
  3. 全局优化:找出各个分段查询之间的最佳操 作次序,使得代价最小。其重点在连接运算的 优化。
  4. 局部优化:对各站点的局部查询做优化,类似于集中数据库。

四、基于关系代数等价变化优化

  • 将连接、并运算向根部移动,选择、投影移动到叶子(即先做选择和投影操作,连接和并运算放到最后)。
  • 将选择条件与水平分片条件结合,去掉矛盾的分支(假如筛选条件中为男,则首先把女给排除)。
  • 将投影属性与垂直分片属性比较,去掉无关的分支。

五、基于半连接运算优化

办理按揭可以缩减关系的大小,以减少数据传输量。适用于通信费用矛盾的场合。具体优化请看下面的例子。

假设有两个站点Site1和Site2,Site1上存放R关系,R关系中有属性A,Site2上存放S关系,S关系中有属性B。
如果想让R和S关系执行连接操作,可以按照下面公式做转化计算。




代价估算的流程如下:



计算过程如下:

计算结果如下:

对于上述流程也可以反过来执行,即站点Site1和Site2分别反过来计算,则计算结果如下:



显然针对上述计算,共有两种方式,至于究竟该采用那一种方式,可以根据二者计算出来的大小做比较,进而做出合适的选择方案。

六、基于直接连接查询优化

从上面直接连接转换为半连接的方案中可以看出,直接连接方案金座一次数据传输即可,但是直接连接转换为半连接计算会增加通信数量(两次)和本地处理时间。转换半连接的最大好处在于减少了网络数据传输量。 一般而言对于高速局域网络环境,可以忽略数据传输量因素,本地处理费用才是最应该考虑的因素。接下来简单讨论下高速局域网中直接连接的优化。

6.1 利用站点依赖信息

所谓的站点依赖信息可以理解成诱导分片的条件。利用站点依赖特性可以使一些数据无需传输。

无数据传输连接的判定算法。

6.2 分片和复制算法

假设有两个站点S1和S2以及两个关系R1和R2(均包含A属性)。其中R1被分成两部分分别存放在S1和S2上,R2也被分为两部分分别存放在S1和S2上。即下图:



如对果两个关系R1和R2在属性A上进行连接操作。第一种方案可以让R1保持分片状态,R2保持完整状态,则处理方式为:将片段F21复制到站点S2 ,与F22合并得到R2 ;将片段F22复制到站点S1 ,与F21合并得到R2,然后分别在站点S1和S2做连接运算。反过来第二种处理方式可以让R2保持分片状态,R1保持完整状态,计算方式同第一种方案类似。

设各个片段的大小为:| F11 |=50 | F12 |=50 | F21 |=100 | F22 |=200
设数据通信代价为:C(x)=x
本地并运算代价为:U(x1,x2)=2(x1+x2)
本地连接代价为:J(x1,x2)=5
(x1+x2)

令R1保持分片状态:
站点S1上的代价FT(Q, S1, R1)=2550 :
200 --传输F22
2(100+200) --F21UF22
5
(50+300) --F11 ∞ ( F21UF22 )
站点S2上的代价FT(Q, S2, R1)=2450 :
100 --传输F21
2(100+200) --F21UF22
5
(50+300) --F12 ∞ ( F21UF22 )
取2450和2550中的最大值,所以总代价为2550。

令R2保持分片状态
站点S1上的代价FT(Q, S1, R2)=1250
50 --传输F12
2(50+50) --F11UF12
5
(100+100) --F21 ∞ ( F11UF12 )
站点S2上的代价FT(Q, S2, R2)=1750 :
50 --传输F11
2(50+50) --F11UF12
5
(200+100) --F22∞ ( F11UF12 )
总代价为:1750

综上,选择令R2保持分片状态。

补充(笛卡尔积、自然连接(直接连接)以及半连接的区别)

笛卡尔积


笛卡尔积

自然连接是一种特殊的等值连接。注意两点,1、两个关系中比较分量必须是相同的属性值。2、在结果中吧重复的属性所在列去掉。




半连接:
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容