免费智能真题库 > 历年试卷 > 系统架构设计师 > 2017年下半年 系统架构设计师 上午试卷 综合知识
  第12题      
  知识点:   封锁协议   两阶段提交协议   数据库
  关键词:   分布式数据库   协议   数据   数据库        章/节:   数据库系统       

 
分布式数据库两阶段提交协议中的两个阶段是指( )。
 
 
  A.  加锁阶段、解锁阶段
 
  B.  获取阶段、运行阶段
 
  C.  表决阶段、执行阶段
 
  D.  扩展阶段、收缩阶段
 
 
 

 
  第46题    2012年下半年  
   48%
在数据库系统中,“事务”是访问数据库并可能更新各种数据项的一个程序执行单元。为了保证数据完整性,要求数据库系统..
 
 
  第8题    2020年下半年  
   28%
在分布式数据库中有分片透明、复制透明、位置透明和逻辑透明等基本概念。其中,是指用户无需知道数据存放的物理位置。其中,()..
 
   知识点讲解    
   · 封锁协议    · 两阶段提交协议    · 数据库
 
       封锁协议
        在多个事务并发执行的系统中,主要采取封锁协议来进行处理。
        (1)一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。一级封锁协议可防止丢失更新,并保证事务T是可恢复的。但不能保证可重复读和不读脏数据。
        (2)二级封锁协议:一级封锁协议加上事务T在读取数据R之前先对其加S锁,读完后即可释放S锁。二级封锁协议可防止丢失更新,还可防止读脏数据。但不能保证可重复读。
        (3)三级封锁协议:一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放。三级封锁协议可防止丢失更新、防止读脏数据与数据重复读。
        (4)两段锁协议:所有事务必须分两个阶段对数据项加锁和解锁。其中扩展阶段是在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;收缩阶段是在释放一个封锁之后,事务不能再申请和获得任何其他封锁。若并发执行的所有事务均遵守两段封锁协议,则对这些事务的任何并发调度策略都是可串行化的(可以避免丢失更新、不可重复读和读脏数据问题)。遵守两段封锁协议的事务可能发生死锁。
        所谓封锁的粒度即是被封锁数据目标的大小,在关系数据库中封锁粒度有属性值、属性值集、元组、关系、某索引项(或整个索引)、整个关系数据库、物理页(块)等几种。
        :封锁粒度小则并发性高,但开销大;封锁粒度大则并发性低,但开销小,综合平衡照顾不同需求以合理选取适当的封锁粒度是很重要的。
 
       两阶段提交协议
        两阶段提交协议(Two Phase Commitment Protocol,2PC)既简单又精巧,它把本地原子性提交行为的效果扩展到分布式事务,保证了分布式事务提交的原子性,并在不损坏日志的情况下,实现快速故障恢复,提高分布式数据库系统的可靠性。
        在两阶段提交协议中,把分布式事务的某一个代理指定为协调者(Coordinator),所有其他代理称为参与者(Participant)。这里的代理是指完成各个子事务的进程。只有协调者才拥有提交或撤销事务的决定权,而其他参与者各自负责在其本地数据库中执行写操作,并向协调者提出撤销或提交事务的意向。一般一个站点唯一地对应一个子事务,如果某一参与者与协调者在同一站点,虽然它们不需要使用网络来通信,但仍逻辑地认为它与协调者不在同一站点。下图描述了协调者和参与者的关系。
        
        协调者和参与者的关系图
        2PC保证分布式事务提交的原子性,这是通过在分布式事务的结果生效以前,所有参与执行分布式事务的站点都同意提交而做到这一点的。这种同步的必要性有很多理由,如果某个事务正在读一项由另一个还未提交的事务更新的数据项的值时,相应的参与者就不会同意马上提交该事务。另一种参与者不同意提交的可能的原因是发生了死锁,这要求某一个参与者撤销事务。注意,参与者不需要任何其他进程来通知就可以撤销一个事务,这种能力相当重要,我们称之为单方面撤销。
        2PC把事务的提交过程分为两个阶段:第一阶段是表决阶段,目的是形成一个共同的决定。开始时,协调者在它的日志中写入一条开始提交的记录,再给所有参与者发送“准备提交”消息,并进入等待状态。当参与者收到“准备提交”消息后,它检查是否能提交本地事务。如果能提交,参与者在日志中写入一条就绪记录,并给协调者发送“建议提交”消息,然后进入就绪状态:否则,参与者写入撤销记录,并给协调者发送“建议撤销”消息。如果某个站点做出“建议撤销”提议,由于撤销决定具有否决权(即单方面撤销),发出“建议撤销”的站点就可以直接忽略这个事务。协调者收到所有参与者的回答后,它就做出是否提交事务的决定。只要有一个参与者建议撤销,协调者就必须从整体上撤销整个分布式事务,因此它写入一条撤销记录,并给所有参与者发送“全局撤销”消息,然后进入撤销状态;否则,它写入提交记录,给所有的参与者发送“全局提交”消息,然后进入提交状态。
        第二阶段是执行阶段,目的是实现这个协调者的决定。根据协调者的指令,参与者或者提交事务,或者撤销事务,并给协调者发送确认消息。此时,协调者在日志中写入一条事务结束记录并终止事务。上图描述了两阶段提交协议的参与者和协调者的交互。
        请注意协调者做出事务的全局终止决定的方式,该决定受两条规则的支配,这两条规则称为全局提交规则:
        (1)只要有一个参与者撤销事务,协调者就必须做出全局撤销决定。
        (2)只有所有参与者都同意提交事务,协调者才能做出全局提交决定。
        从下图中可以看出以下关于两阶段提交协议的一些重要之处:
        
        两阶段提交协议活动图
        (1)两阶段提交协议允许参与者可以单方面撤销事务。
        (2)一旦参与者确定了提交或撤销提议,就不能再更改它的提议。
        (3)当参与者处于就绪状态时,根据协调者发出的消息的种类参与者可以转换为提交状态或撤销状态。
        (4)协调者依据全局提交规则做出全局终止决定。
        (5)注意协调者和参与者可能进入某些相互等待对方发送消息的状态。为了确保它们能够从这些状态中退出并终止,要使用定时器。每个代理进程进入一个状态时都要设置超时器。如果所期待的消息在定时器超时之前没有到来,定时器向代理进程报警,进程根据超时协议执行相应动作。
 
       数据库
        数据库(DataBase,DB)是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
        系统使用的所有数据存储在一个或几个数据库中。
   题号导航      2017年下半年 系统架构设计师 上午试卷 综合知识   本试卷我的完整做题情况  
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 /
 
第12题    在手机中做本题