目录
3. 掌握分布式数据库应用系统中的分片设计内容和分布设计内容.
4. 掌握基于关系代数等价变换规则的查询优化技术;//作业及例题
6. 了解并掌握关系静态特性的概念,并能计算关系代数运算对静态特性的影响;
7. 掌握基于半连接运算的查询优化处理,即SDD-1算法;//作业及例题
5. 掌握两阶段提交协议内容(算法描述)、实现方式以及对故障的处理;2PC协议组塞现象;
1. 能够使用优先图判别局部调度是否可串行化,并能够判别一个全局调度是否是一致性调度(全局可串行化调度的条件);
第一章:分布式数据库系统概述
掌握分布式数据库的定义、特点,了解分布式数据库系统的优点与挑战;
掌握分布式数据库系统的体系结构、分布式数据库的体系结构,并能对分片模式和分配模式加以较详细的说明;
掌握分布式数据库系统中的分布透明性,并能在不同的透明度支持级别下编写查询程序;
1. 定义:
一个物理上分散而逻辑上集中的数据库系统
2. 特点:
- *物理分布性----数据分散在系统中的节点上
- *逻辑整体性----有一个全局模式,支持全局应用。GDB/GDBMS
- *节点自治性----局部应用,LDB/LDBMS
- 数据分布透明性:归入数据独立性范围。
- 集中与自治相结合的控制机制:自治控制机制是指各站点的DBMS可以独立管理局部数据库(自治),同时,系统又设有集中控制机制,协调各局部DBMS的工作,执行全局控制管理功能。
- 适当的数据冗余度:优点?缺点?
- 事务管理的分布性:局部事务管理 vs.全局事务管理,事务具有分布性。
3. 体系结构:
4. 优点和挑战
优点:
(1)良好的可靠性和可用性
可靠性:系统可以在任何时刻启动和运行(没有故障)的可能性;//系统在给定的时间间隔内成功运行的概率。
可用性:在某个特定的时间段内系统连续可用的可能性//系统在给定的时间出错后能继续运行的概率。
DDBS具有较高的可靠性和可用性(局部不影响全局,冗余机制)。
(2)提高系统效率,降低通信费用(就近存储,就近访问)
(3)较大的灵活性和可伸缩性//这个指标对分布式系统很重要
(4)经济性和保护投资//与上述类似观点
(5)适应组织的分布式管理和控制//符合用户地域分散的组织结构
(6)数据分布具有透明性和站点具有较好的自治性
挑战:
(1)数据的分片、分布与冗余度 (数据副本的多少)//减少站点间的数据传输代价
(2)异构数据库的互联//在各站点均为关系数据模型的情况下,也存在着数据格式不一致的问题,解决办法:总体视图(全局数据库模式),这个全局模式不具有强制性。
(3)分布式数据库的查询处理//减少数据传输代价,这个在CDBS不存在。
(4)分布式数据库的更新处理//冗余的副作用,就是如何保证数据的一致性
(5)分布式数据库的并发控制//封锁+调度+提交,至少在调度方面,各个站点的一致性调度,能否保证全局调度也是一致性的?
(6)分布式数据库的恢复控制//至少多了一种故障类型:通信故障
(7)目录管理//目录=DB中的数据字典,包括数据库中的基本表、视图、权限定义等,也包括必需的控制信息数据。目录也是分布存储的,因此本身也可以构成一个分布式数据库。
1.分片模式
1.1. 数据分片:
1)水平分片----按特定条件把全局关系的所有元组分划成若干个互不相交的子集(一个逻辑片段),它们通过对全局关系施加选择运算得到,并可通过对这些片段执行合并操作来恢复该全局关系.
Example: S(S#,SNAME,AGE,SEX)水平分片为男、女两个子集。
方法一:
DEFINE FRAGMENT SHF1 AS SELECT * FROM S WHERE SEX=‘M’;
DEFINE FRAGMENT SHF2 AS SELECT * FROM S WHERE SEX=‘F’;
方法二:
SHF1=σsex=’M’(S), SHF2=σsex=’F’(S), -> S=SHF1 ∪ SHF2
(这里σp(r),p是条件,括号中r表示对象,是表格)
2)垂直分片----把全局关系的属性集分成若干个子集,要求全局关系的每一个属性至少映射到一个垂直片段中,且每一个垂直片段都包含该全局关系的主码。它们可以通过对全局关系施加投影运算得到,并可通过对这些片段执行连接操作来恢复该全局关系.
Example: S(S#,SNAME,AGE,SEX)垂直分片为如下两个片段。
方法一:
DEFINE FRAGMENT SVF1 AS SELECT S#,AGE,SEX FROM S;
DEFINE FRAGMENT SVF2 AS SELECT S#,SNAME FROM S;
方法二
SVF1=ПS#,AGE,SEX(S), SVF2=ПS#,SNAME(S) -> S=SVF1 ∞ SVF2
(这里Пp(r),p是列的表头,可以多个;括号中r表示对象,是表格)
1.2. 分片规则:
- 完备性条件:必须把全局关系的所有数据映射到各个片段中;
- 可重构条件:必须保证能够有同一个全局关系的各个片段来重建该全局关系.
- 不相交条件:要求一个全局关系被分割后所得的各数据片段互不重叠(对水平分片)或只包含主码重叠(对垂直分片).
2.分配模式
DDB的体系结构:六个模式、五种映射.特有的:分片模式、分配模式
四层、六模式
(1) 全局外层—全局外模式:全局应用的用户视图,是全局概念模式的子集;
(2) 全局概念层—
全局概念模式:描述全局数据的逻辑结构和数据特性,即全局概念视图;
分片模式:描述全局数据的逻辑划分;
分配模式:描述数据片段的分配情况;
(3) 局部概念层—局部概念模式:一个节点上的所有全局关系模式在该节点上物理映像的集合.
(4) 局部内层—局部内模式:描述一个节点上所有数据的存储情况.
关系;
全局关系RR1,R2,R3,R4------分片模式;
R1,R2,R3,R4为R的片段,它们将被映射到各个节点上------分配模式:
R1->R11, R21
R2->R12, R32
R3-> R33
R4-> R34
3. 分布透明度
数据独立性=逻辑独立性+物理独立性+数据分布独立性/透明性
分布透明性包括三个层次(从高到低依次为):分片透明性、位置透明性和局部数据模型透明性
1.分片透明性----最高等级的透明性
当DDBS具有分片透明性时,用户只需关心全局关系模式,不必考虑数据的逻辑分片(当然也就不必考虑物理映射等).
2.位置透明性(或称分配透明性)
位置透明性包含了两种情形:一种是各片段被复制的情况,即每一片段是否被复制,复制了几个副本;另一种情况是片段及其各副本的节点位置分配情况.
3.局部数据模型透明性
与各个节点上数据库的数据逻辑模型无关
题目1:考虑全局关系SUPPLIER(SNO,SNAME,CITY)被划分为两个逻辑片段S1和S2,S1存放在L1上,而片段S2有一个副本,分别存放在节点L2和L3上.
一个名为SUPQUIRY的简单查询:从终端接收一个供应商号,查询该供应商号相应的供应商名.
1)最高级别:
Read(terminal,$SNO);
Select SNAME into $SNAME From SUPPLIER Where SNO=$SNO;
Write(terminal,$SNAME).
2)中等级别:
Read(terminal,$SNO);
Select SNAME into $SNAME From S1 Where SNO=$SNO;
If not #FOUND then
Select SNAME into $SNAME From S2 Where SNO=$SNO;
Write(terminal,$SNAME).
3)最低级别:局部数据模型透明性
Read(terminal,$SNO);
Select SNAME into $SNAME From S1 At SITE1 Where SNO=$SNO;
If not #FOUND then
Select SNAME into $SNAME From S2 At SITE3 Where SNO=$SNO;
Write(terminal,$SNAME).
题目2:考虑全局关系SUPPLIER(SNO,SNAME,SADDR)被划分为两个逻辑片段S1和S2,全局关系SUPPLY(SNO,PNO,QUANTITY)也被划分为两个逻辑片段SP1和SP2,它们的节点位置分配如下:S1 存放在L1上,S2存放在节点L2上,SP1在L3上,SP2在L4上.我们还假设(1)每种零件仅由一家供应商提供;(2)由S1中供应商供应的零件号在SP1中, 由S2中供应商供应的零件号在SP2中.
查询:根据用户输入的零件号查询供应该零件的供应商姓名.
1)最高级别:
Read(terminal,$PNO);
Select SNAME into $SNAME From SUPPLIER S, SUPPLY SP
Where S.SNO=SP.SNO AND SP.PNO=$PNO;
Write(terminal,$SNAME).
2)中等级别:
Read(terminal,$PNO);
Select SNAME into $SNAME From S1,SP1
Where S1.SNO=SP1.SNO AND SP1.PNO=$PNO;
If not #FOUND then
Select SNAME into $SNAME From S2,SP2
Where S2.SNO=SP2.SNO AND SP2.PNO=$PNO;
Write(terminal,$SNAME).
3)最低级别:局部数据模型透明性
Read(terminal,$PNO);
Select SNO into $SNO From SP1 AT L3 Where PNO=$PNO;
If #FOUND then
Begin
Send $SNO From L3 to L1;
Select SNAME into $SNAME From S1 AT L1 Where SNO=$SNO;
End
Else
Begin
Select SNO into $SNO From SP2 AT L4 Where PNO=$PNO;
Send $SNO From L4 to L2;
Select SNAME into $SNAME From S2 AT L2 Where SNO=$SNO;
End
Write(terminal,$SNAME).
分布式数据库、集中式数据库和联邦数据库(Federative DB)间的异同点
CDBS:物理上数据(完全)集中、逻辑上有一个全局模式
DDBS:物理上数据分散(允许冗余)、逻辑上有一个(强)全局模式
FDBS:物理上数据(非均匀)分散、逻辑上有一个(弱)全局模式
第一章练习和作业
练习:
作业
第二章 DDBS应用设计 vs. CDBS应用设计
1. 简单了解分布式数据库应用系统设计方法和目标;
在DDBS设计中,为使分片设计和分配设计能够高效地支持应用,还要知道应用的下列信息:
1)各个应用的“原发站点”
2)各个应用在每个站点被激活的频率
3)各个应用对所要求访问的每个数据对象的访问次数、类型和统计分布
目标:
(1)分布式数据库的本地性(或近地性)
----为尽可能减少节点之间的通信开销,应该使数据和应用实现最大程度的本地性.90%的数据应当在本地站点找到,而只有10%的数据需要在远程站点上进行访问。
----更为常见的是,由于几个应用需要从不同站点访问同样的数据。在这种情况下,最有效的设计是确保数据对最大数目的应用具有本地性。即要对每一种可供选择的分片方法和片段的分配方法都统计出本地访问和远程访问的次数,从中选择一个最佳的方案。
(2)控制数据的适当冗余(该冗余与CDBS中的冗余有何不同?)
在DDBS中,为了提高系统本地性、并发度和可靠性,需要增加数据的副本。当然,为维护数据的一致性,减少同步更新的开销,需要控制数据副本的数量。因此,需要考虑这样的问题:数据是否需要副本?副本个数多少为合适?
(3)工作负荷分布
分布工作负荷的目的是充分利用每个站点计算机的能力和资源,提高应用执行的平行程度,从而提高系统的性能。因为工作负荷分布对处理的本地性,具有相反的影响,所以需要在数据分布设计时考虑到两者的平衡。
(4)存储的能力和费用
数据库的分布会受到各站点的存储能力的影响。
作业:简答题
简述分布式数据库系统、集中式数据库系统和联邦数据库系统之间的异同点。
在2PC协议中,什么情况下会发生阻塞现象?
在分布式数据库中,允许数据适当冗余,是从什么方面来考虑的?但随之而来的问题又是什么?与CDBS中的数据冗余有何不同?
2. 掌握分布式数据库应用系统自顶向下设计步骤;
3. 掌握分布式数据库应用系统中的分片设计内容和分布设计内容.
1)分片设计内容
1.分片设计的基本目的----产生一个对全局数据合适的划分方案,以便减少应用中的操作量,并且使应用实现尽可能的本地性.
2.数据分片三原则:见Page 45(在下面例子2.1中).
3.水平分片
初级分片
以关系自身的属性性质为基础,执行“选择”操作,将该关系划分成若干个不相交的片段.
例2.1 将S(S#,SNAME,AGE,SEX)水平划分成两个子集S1和S2.
称划分条件为限定语.
1)完整性条件<=各片段定义中的限定语集合是完整的.
2)可重构条件<=当限定语集合是完整的.
3)不相交条件<=限定语之间是互斥的.
导出分片
2)数据片段位置分配
在确定数据片段的位置分配时,应根据应用需求确定设计是非冗余分配还是冗余分配。在非冗余分配中,每个片段恰好映射到一个站点上,否则,每个片段映射到多个站点上。
1.非冗余分配:
最佳适应方法---对所有分配法都进行估算,然后选择最佳的站点.
2.冗余分配----比较复杂,可考虑非冗余分配+适当的冗余.
“所有得益站点法”:首先确定非复制问题的解,然后在全部站点中确定一组站点,给该组中的每个站点分配片段的一个副本,这样做所得到的好处要比为此而付出的费用合算.
“附加复制法”:首先确定非复制问题的解,然后从最有益处起逐步附加复制的副本,此过程直到“附加复制”已无明显好处时结束.
第三章:分布式数据库中的查询处理和优化
1. 掌握查询树的概念;
步骤
1.首先拿到关系代数式子,写成语法树的形式
2.可以下移的选择往下移到底
3.把不需要的列投影去掉
4.分组:一个笛卡尔积(二元运算)分为一组
例题
2. 了解关系代数等价变换规则,并掌握其中常用的几条规则;
(1)有关空值的等价变换规则(Φ空集符):
R∪Φ≡R; R∩Φ≡Φ;R∞Φ≡Φ;R∝Φ≡Φ;
(2)自身操作的等价变换规则:
R∪ R ≡R; R∩R≡ R;R∞R≡R;
(3)一元操作幂等律:
----A1,...,AnB1,...,Bm(E)≡A1,...,An(E),其中A1,...,An是B1,...,Bm中的属性;
----σF1(σF2(E))≡σF1^F2(E).
(4)一元操作交换律: ∪1 (∪2(R)) ≡ ∪2 (∪1(R)).
特别地,
A1,...,An(σF(E))≡σF(A1,...,An(E)),其中F只涉及A1,...,An的属性;否则,若F属性,还涉及不在{A1,...,An}中的B1,...,Bm,那么就有下式成立:
A1,...,An(σF(E))≡σF(A1,...,An,B1,...,Bm(E))
(5)二元操作交换律:
RBS ≡ SBR,其中B为某个二元操作,B≠∝.
(6)二元操作结合律:
R B (S B T) ≡ (R B S) B T;
3. 掌握分布式数据库中的查询处理步骤;
(1)局部查询——在本站点上执行查询,即查询本站点上存放的数据.可以使用如下的集中式数据库系统中所采用的查询优化策略:
- 选择和投影运算应尽可能先进行;
- 在执行连接前对数据库数据进行适当的预处理,比如,在连接属性上进行排序以及索引等.
- 同时执行一串投影和选择操作,且尽可能把它们与其前后的二元操作结合起来,以避免重复扫 描关系和减少中间数据.
- 提取公共子表达式
(2)远程查询——在某个站点上执行查询,即查询在网络上的另一个站点上存放的数据.除了考虑上述的优化策略外,还需要考虑远程站点的选择.
(3)全局查询——在某个站点上执行
查询,即查询在网络上的多个站点上存放的数据.为了执行全局查询并确定一个好的查询策略,需要如下步骤:
- 具体化----确定查询使用的物理副本,落实查询对象.
- 确定操作执行的次序----主要是要确定 “连接”和“并”操作的执行次序.
- 确定操作执行的方法----把若干个操作连接起来在一次数据库访问中执行,确定可用的访问路径以及确定某种计算方法等.
- 确定执行站点----主要考虑通信代价和执行效率.
(1)数据本地化
将一个在全局关系上的查询落实到合适的片段上----分片模式和分配模式.
输入:全局查询树
输出是:片段查询树
(2)全局优化
找出分片查询的最佳操作次序,使得代价(指I/O、CPU和通信代价之和)最小.
输入:片段查询树
输出是:优化的片段查询树
(3)局部优化
采用集中式数据库系统中查询优化技术对片段查询进行优化处理.
输入:优化的片段查询树
输出是:局部可执行子查询
4. 掌握基于关系代数等价变换规则的查询优化技术;//作业及例题
例3.3 基于关系代数等价变换的查询优化处理,全局关系S(s#,sname,age,sex)水平分片为:
S1=σsex=‘M’(S), S2=σsex=‘F’(S);
全局关系SC(s#,c#,grade)水平分片为:
SC1=σc#<=20(S),SC2=σc#>20(S).
查询为:Select sname from S,Sc where S.s#=SC.s# and sex=‘M’ and grade>90.
答案:
1)转变为关系代数表达式:
Πsname(σsex=‘M’^grade>90(σS.s#=SC.s#(S X SC)))。
实际上,可简化为下列表达式:
Πsname(σsex=‘M’^grade>90(S ∞ SC)).
2)从关系代数表达式转换为查询树;3)-4) 从全局查询树转换为片段上的查询树;
5)利用关系代数等价变换规则,对片段上的查询树进行优化处理.
5. 了解语义查询优化、提取公共因子在查询优化中的应用;
1. 假设有全局关系:
DEPT(D#,DNAME,MGRSSN,AREA,DESCRIPTION),
SP(S#,P#,D#,QTY), S(S#,SNAME,CITY).
DEPT按D#的值(1-10,11-20,21-30)进行水平分片,其中,D#小于等于10的部门属于北部地区,否则为南部地区.
SP按S#的值(>1000和<=1000)水平分片为SP1,SP2.
查询北部地区(North)所属部门发出订单的、且一个订单中订货数量大于100的供应商号.
要求采用基于关系代数等价变换规则的查询优化技术对该查询从全局查询的角度进行优化处理.
3.图书馆数据库:
书目关系Book(Ti,Au,Pn,Nc)//Ti—书名,Au—作者,Pn—出版社名,Nc--图书编号;
借阅者关系Borr(Na,Ad,Cn)//Na—借阅者姓名,Ad—借阅者住址,Cn--借书证号码;
借阅登记:Loa(Cn,Nc,Da)//Da--借阅日期.
查询:白先生于2005年5月1日前借出的所有书籍的书名.
答案:
关系代数表达式为:ΠTi(σDa<01/05/2005 ^ Na=‘白’ (Loa ∞ Borr ∞ Book)).
查询树如下:
6. 了解并掌握关系静态特性的概念,并能计算关系代数运算对静态特性的影响;
1.静态特性:
- 关系的元组个数,即关系的基数:Card(R).
- 关系的宽度:Size(R)=∑i(属性Ai的宽度).
- 属性A在关系R中不同值的个数:Val(A(R)).
- 片段所在场地:Site(R)
例:假设SUPPLIER是全局关系,SUPP1是它的一个片段,其静态特性如下所示:
Card(SUPPLIER)=200;
SNO SNAME SCITY
Size 6 20 10
Val 200 200 2
Size(SUPPLIER)=36;
2.代数操作对静态特性的影响
7. 掌握基于半连接运算的查询优化处理,即SDD-1算法;//作业及例题
例子:全局关系有:
SUPPLIER(S#,NAME),SUPPLY(S#,D#),
DEPT(D#,NAME).
查询Q:SUPPLIER∞SUPPLY∞DEPT.
假设它们的静态特性如下:
Card(SUPPLIER)=200; Card(SUPPLY)=5000;
S# NAME S# D#
Size 4 20 4 2
Val 200 200 1000 100
Size(SUPPLIER)=24 Size(SUPPLY)=6
Site(SUPPLIER)=1. Site(SUPPLIY)=2.
Card(DEPT)=20;
D# LOC#
Size 2 3
Val 20 5
Size(SUPPLIER)=5
Site(SUPPLIER)=3.
步骤一:
∝ 选中率 收益 代价 净收益
P1:SUPPLY∝SUPPLIER ρ(P1)=0.2 0.8*6*5000 4*200
P2:SUPPLY∝DEPT ρ(P2)=0.2 0.8*6*5000 2*20
P3:SUPPLIER∝SUPPLY ρ(P3)=1 0 4*1000
P4:DEPT∝SUPPLY ρ(P4)=1 0 2*100
(其中P1,P2,P3,P4表示在查询Q中所有可能的半连接)
收益=(1-选中率)*前者size*前者card值(前者总大小);
代价=后者size*后者val(后者总大小)
ρ=Val(A[S])/Val(dom(A))
Card(T)=ρ*Card(R),
步骤二:
我们选择P2作为第1个执行的操作.记T1=SUPPLY∝DEPT,静态特性如下:
Card(T1)=0.2*5000=1000;
S# D#
Size 4 2
Val 666* 0.2*100=20
Size(T1)=6
Site(T1)=2
*r=Card(T1)=1000,n=card(SUPPLY)=5000,m=Val(A[SUPPLY])=1000,因为m/2<r<2*m,所以,c=(r+m)/3=666.注意,此时,dom(S#)=1000.
∝ 选中率 收益 代价 净收益
P1:T1∝SUPPLIER ρ(P1)=0.2 0.8*6*1000 4*200
P3:SUPPLIER∝T1 ρ(P3)=0.666 0.334*24*200 4*666
P4:DEPT∝T1 ρ(P4)=1 0 2*20
步骤三:
选择P1作为第2个执行的操作.记T2=T1∝SUPPLIER的静态特性如下:
Card(T2)=0.2*1000=200;
S# D#
Size 4 2
Val 0.2*666=133 20*
继续考虑剩余的可能的半连接.
∝ 选中率 收益 代价 净收益
P3:SUPPLIER∝T2 ρ(P3)=0.67 0.33*24*200 4*133
P4:DEPT∝T2 ρ(P4)=1 0 2*20
步骤四:
选择P3作为第3个执行的操作.
T3=SUPPLIER∝T2(连接属性为S#)的静态特性如下:
Card(T3)=0.67*200=133;
S# NAME
Size 4 20
Val 0.67*200=133 133*
P3执行结果对P4没有影响,而P4的净收益为负值,因此P4不执行。
这样,P2、P1、P3是在执行查询Q之前要执行的一个缩减程序.这样,
场地1: T3=SUPPLIER∝T2,CARD(T3)=133,SIZE(T3)=24;
场地2: T2=T1∝SUPPLIER,CARD(T2)=200,SIZE(T2)=6;
场地3: DEPT, CARD(DEPT)=20,SIZE(DEPT)=5;
选择各场地执行Q的代价如下:
Cost(site 1)=6*200+5*20=1300;
Cost(site 2)=133*24+5*20=3292;
Cost(site 3)=133*24+6*200=4392;
我们选择场地1作为执行半连接操作的场地.
场地1被选为查询执行的场地.而T3是最后一个半连接操作,这个缩减运算可以省略。因此,P2、P1是在执行查询Q之前要执行的一个缩减程序,选择场地1作为查询执行场地,总传输费用为1300+(40+800)=2140.
第四章:分布式数据库中的事务管理和恢复
1. 掌握分布式数据库中的事务定义及特性;
集中式DBS中的事务----对数据库的一个或一段程序或命令的一次执行.
A:原子性----事务是数据库系统运行的原子程序单元.每个事务的所有操作要么被全部成功地执行,要么一个也不被执行.
C:一致性----如果在执行事务之前数据库是一致的,那么在执行事务之后数据库也还是一致的.
I:隔离性----即使多个事务并发执行,每个事务不受其他的事务的影响,因而也就能保证数据库的一致性.
D:持久性----事务成功执行后它对数据库的修改是永久的,即使系统出现故障也不受影响.
2. 掌握分布式数据库中的事务全局提交原则;
3. 掌握分布式数据库中的故障类型;
1)事务故障(计算溢出、完整性被破坏、I/O出错等)、系统故障(CPU出错、死循环、系统崩溃等)和介2)质故障(DB因介质损坏无法访问)等。
分布式数据库系统中的故障:
除了上述故障外还有因网络引起的故障:
3)站点故障:网络上站点可能出现的故障.
4)通信故障:站点之间通信出现的故障.
----报文故障/报文丢失;
----网络分割.
4. 了解基于日志的事务故障的恢复处理过程;
(1)孤立和逐步退出事务的原则
对于不影响其它事务的可排除性局部故障,例如事务操作的删除、超时、违反完整性规则、资源、限制、死锁等,应令某个事务孤立和逐步地退出,将其所做过的修改恢复,即UNDO.
(2)成功结束事务原则
成功结束事务所做过的修改应超越各种故障而存在,也就是重做(REDO)它所做过的所有修改数据库的操作.
(3)夭折事务的原则
若发生了非局部性的不可排除的故障,例如系统崩溃,则撤消全部事务,恢复到初态.
5. 掌握两阶段提交协议内容(算法描述)、实现方式以及对故障的处理;2PC协议组塞现象;
2PC协议把事务的提交过程分为两个阶段:决定/表决阶段,即做出提交或中止全部子事务的决定,和执行阶段,即实现第一阶段的决定
对故障的处理:
1.场地故障
(1)当一参与者在写入“准备提交”前发生故障时,该参与者无法向协调者发回答信息,因此,当协调者等待超时后,将决定中止事务.
对该故障场地而言,当故障恢复后,只要撤消该事务即可.
(2)参与者在写入“准备提交”后发生故障,这时,其它的参与者可以正常地结束该事务“提交”和“撤消”.
故障恢复后,该参与者要访问协调者或其它参与者,以了解事务已做出的决定,然后执行相应的操作.
(3)协调者在日志中写入“预提交”记录后,写入“全部提交”或“全部夭折”前发生故障,这时已发出“准备提交”信息的参与者将等待协调者恢复.
协调者重启动后将从头恢复提交协议,从“预提交”记录中读出参与者的标识符,重发“预提交”命令给参与者,重新执行提交过程.
(4)协调者在日志中写入“全部提交”或“全部夭折”记录后,在写入“完成”记录之前发生故障.
协调者恢复时必须给所有的参与者重发其决定.
2.丢失报文
(1)来自参与者的回答报文(准备提交或夭折)丢失了至少一个,此时,协调者将等待回答而超时,整个事务被夭折.
(2)丢失“预提交”报文,由于至少一个参与者收不到该命令,因此协调者会因等待参与者的回答而超时,整个事务被夭折.
(3)丢失“提交”或“夭折”报文,此时,参与者处于等待协调者命令的状态,当等待超时时,参与者将向协调者发送请求重发该命令的信息----需要在参与者中有超时机制.
(4)丢失“执行”报文,当协调者未收到全部的“执行”报文时,它会因等待而超时,此时,协调者重发命令给所有参与者----需要在协调者中有超时机制.
6. 了解2PC协议线性通信结构中报文、网络延迟的计算。
(1)线性2PC协议:
----报文:2*N
----延迟:2*N*T
(2)集中式2PC协议:
----报文:4*N
----延迟:4*T
(3) 分层式2PC协议:
----报文:4*N
----延迟:4*T--2*N*T
(4)分布式2PC协议:
----报文:N*(N+1)
----延迟:2*T
7. 掌握三阶段提交协议以及该协议是如何避免组塞现象的。
阻塞状态
所谓事务的阻塞是指一个场地的子事务本来是可以执行结束的(提交或夭折),然而由于分布式数据库的故障,它必须等待故障恢复以后得到需要的信息后才可以做出决定,而故障情况是不可以预料的,该子事务又占有一些系统资源不能释放,没法继续执行,这时称之为事务进入阻塞状态.
3PC协议的工作过程:
第一阶段,协调者向所有的参与者发“预提交”报文,由每个参与者根据自己的情况进行投票,只有收到所有的参与者均赞成提交的报文才进入下一阶段.
第二阶段,协调者向所有的参与者发“准备提交”报文,参与者收到该报文后若已经准备好提交,则回答“准备就绪”报文,否则进行夭折处理.
第三阶段,当协调者收到所有的参与者“准备就绪”的回答,就向所有的参与者发“提交”报文,参与者收到该报文后可以提交其子事务.
第五章:分布式数据库中的并发控制
1. 能够使用优先图判别局部调度是否可串行化,并能够判别一个全局调度是否是一致性调度(全局可串行化调度的条件);
串行调度:串行执行,总是可以正确执行,使数据库保持一致状态
可串行化调度:让有冲突的操作串行执行,非冲突的操作并行执行,一个可串行化调度必定与某个串行调度等价,且是一致性调度
一致性调度:执行一个调度S,使数据库从一个一致状态转变到另一个一致状态,任何一个串行调度是一致性调度,反之不成立。
2. 了解并掌握封锁机制;
两阶段封锁协议:对数据项的操作执行完后才释放锁。遵循两阶段封锁协议的并发控制算法所产生的调度都是可串行化的。如果调度S的每个事务都遵守2PL协议,那么S是可串行化的。但有死锁的可能。
3. 了解两阶段锁协议的工作过程;
是指所有的事务必须分两个阶段对数据项加锁和解锁。即 事务分两个阶段 ,第一个阶段是 获得封 锁 事务可以获得任何数据项上的任何类型的锁,但是不能释放;第二阶段是 释放封锁 ,事务可以 释放任何数据项上的任何类型的锁,但不能申请。 第一阶段是获得封锁的阶段,称为 扩展阶段 :其实也就是该阶段可以进入加锁操作, 在对任何数据 进行读操作之前要申请获得S锁 , 在进行写操作之前要申请并获得X锁 , 加锁不成功,则事务进入等待状 态 ,直到加锁成功才继续执行。就是 加锁后就不能解锁 了。 第二阶段是释放封锁的阶段,称为 收缩阶段 :当事务释放一个封锁后,事务进入封锁阶段,在该阶 段 只能进行解锁而不能再进行加锁操作 。 遵循了两阶段封锁协议的并发控制算法所产生的任意的并发调度都是可串行化的 对数据项的操作执行完后才释放锁:如果一个事务所有的封锁操作都放在第一个解锁操作之前,那么 就说该事务遵守两阶段封锁协议.
缺点: ① 限制了一个调度中可以发生的并发事务的数量. ② 可能出现死锁.
4. 了解意向锁概念以及多粒度封锁协议;
锁的粒度:指锁定数据项的范围。粒度小,并发度高,锁的开销大,如粒度为一条记录;粒度大,并发度低,锁的开销少,如粒度为一个页面
锁的类型:共享锁(S锁,也称读锁)、排他锁(X锁,也称写锁)。
多粒度封锁协议:允许多粒度树中的每个节点被独立地封锁.对一个节点封锁意味着这个节点的所有后裔节点也被加以同样类型的锁.
5. 了解死锁的判别。
死锁的检测:通过对全局等待图中回路的形成进行研究来实现
死锁的解决:撤消某个/某些事务.选择撤消哪些事务称为受害者选择.通过选择一个或多个受害者事务,这些事务将被优先执行或撤消,以打破全局等待图中的回路.