免费智能真题库 > 历年试卷 > 数据库系统工程师 > 2013年上半年 数据库系统工程师 上午试卷 综合知识
  第61题      
  知识点:   两阶段提交协议
  章/节:   数据库主流应用技术       

 
在分布式数据库中,关系的存储采用分片和复制技术,存储在不同的站点上。用户无需知道所用的数据存储在哪个站点上,称为(60)。分布式事务的执行可能会涉及到多个站点上的数据操作,在2PC协议中,当事务Ti完成执行时,事务Ti的发起者协调器Ci向所有参与Ti的执行站点发送<prepare Ti>的消息,当收到所有执行站点返回<ready Ti>消息后,Ci再向所有执行站点发送<commit Ti>消息。若参与事务Ti执行的某个站点故障恢复后日志中有<ready Ti>记录,而没有<commit Ti>记录,则(61)。
 
 
  A.  事务Ti己完成提交,该站点无需做任何操作
 
  B.  事务Ti已完成提交,该站点应做REDO操作
 
  C.  事务Ti未完成提交,该站点应做UNDO操作
 
  D.  应向协调器询问以决定Ti的最终结果
 
 
 

   知识点讲解    
   · 两阶段提交协议
 
       两阶段提交协议
        两阶段提交协议(Two Phase Commitment Protocol,2PC)既简单又精巧,它把本地原子性提交行为的效果扩展到分布式事务,保证了分布式事务提交的原子性,并在不损坏日志的情况下,实现快速故障恢复,提高分布式数据库系统的可靠性。
        在两阶段提交协议中,把分布式事务的某一个代理指定为协调者(Coordinator),所有其他代理称为参与者(Participant)。这里的代理是指完成各个子事务的进程。只有协调者才拥有提交或撤销事务的决定权,而其他参与者各自负责在其本地数据库中执行写操作,并向协调者提出撤销或提交事务的意向。一般一个站点唯一地对应一个子事务,如果某一参与者与协调者在同一站点,虽然它们不需要使用网络来通信,但仍逻辑地认为它与协调者不在同一站点。下图描述了协调者和参与者的关系。
        
        协调者和参与者的关系图
        2PC保证分布式事务提交的原子性,这是通过在分布式事务的结果生效以前,所有参与执行分布式事务的站点都同意提交而做到这一点的。这种同步的必要性有很多理由,如果某个事务正在读一项由另一个还未提交的事务更新的数据项的值时,相应的参与者就不会同意马上提交该事务。另一种参与者不同意提交的可能的原因是发生了死锁,这要求某一个参与者撤销事务。注意,参与者不需要任何其他进程来通知就可以撤销一个事务,这种能力相当重要,我们称之为单方面撤销。
        2PC把事务的提交过程分为两个阶段:第一阶段是表决阶段,目的是形成一个共同的决定。开始时,协调者在它的日志中写入一条开始提交的记录,再给所有参与者发送“准备提交”消息,并进入等待状态。当参与者收到“准备提交”消息后,它检查是否能提交本地事务。如果能提交,参与者在日志中写入一条就绪记录,并给协调者发送“建议提交”消息,然后进入就绪状态:否则,参与者写入撤销记录,并给协调者发送“建议撤销”消息。如果某个站点做出“建议撤销”提议,由于撤销决定具有否决权(即单方面撤销),发出“建议撤销”的站点就可以直接忽略这个事务。协调者收到所有参与者的回答后,它就做出是否提交事务的决定。只要有一个参与者建议撤销,协调者就必须从整体上撤销整个分布式事务,因此它写入一条撤销记录,并给所有参与者发送“全局撤销”消息,然后进入撤销状态;否则,它写入提交记录,给所有的参与者发送“全局提交”消息,然后进入提交状态。
        第二阶段是执行阶段,目的是实现这个协调者的决定。根据协调者的指令,参与者或者提交事务,或者撤销事务,并给协调者发送确认消息。此时,协调者在日志中写入一条事务结束记录并终止事务。上图描述了两阶段提交协议的参与者和协调者的交互。
        请注意协调者做出事务的全局终止决定的方式,该决定受两条规则的支配,这两条规则称为全局提交规则:
        (1)只要有一个参与者撤销事务,协调者就必须做出全局撤销决定。
        (2)只有所有参与者都同意提交事务,协调者才能做出全局提交决定。
        从下图中可以看出以下关于两阶段提交协议的一些重要之处:
        
        两阶段提交协议活动图
        (1)两阶段提交协议允许参与者可以单方面撤销事务。
        (2)一旦参与者确定了提交或撤销提议,就不能再更改它的提议。
        (3)当参与者处于就绪状态时,根据协调者发出的消息的种类参与者可以转换为提交状态或撤销状态。
        (4)协调者依据全局提交规则做出全局终止决定。
        (5)注意协调者和参与者可能进入某些相互等待对方发送消息的状态。为了确保它们能够从这些状态中退出并终止,要使用定时器。每个代理进程进入一个状态时都要设置超时器。如果所期待的消息在定时器超时之前没有到来,定时器向代理进程报警,进程根据超时协议执行相应动作。
   题号导航      2013年上半年 数据库系统工程师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第61题    在手机中做本题