欢迎来到天天文库
浏览记录
ID:38683592
大小:229.02 KB
页数:51页
时间:2019-06-17
《《分布式并发》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章分布式并发控制计算机科学与技术学院5.1问题提出与抽象一读写异常问题二分布式数据库管理系统的抽象1数据库与DM(DataManagers)数据库可以看作是一个逻辑数据项集合,记作X,Y,Z,…….每一个逻辑数据项可以存储在系统的任何DM中,也可以冗余地存储在多个DM中。TM(TransactionManagers)。2用户与事务用户的数据库请求是通过执行事务与DDB发生联系的。事务可以来自于自含查询语言的联机查询如(QUEL);也可是报告书写语言的报告生成程序如(PRG);还可以是应用程序设计语言嵌入的数据
2、操纵语言编写的应用程序,如(PROC)。一个事务模拟为一个READ和WRITE操作的序列,而不关心其内部计算。一个事务的逻辑写集是该事务要写的所有逻辑数据项的集合。如果一个事务的存储读集或存储写集与另一个事务的存储写集相交,则称这两个事务是冲突的(Conflict)。5.2用于并发控制的DDBS抽象结构TM1TM2TM3DM1DM2DM3DS1DS2DS3T1.TNT1.TNT1TNDDBS抽象示意图每一个在DDBMS中执行的事务都由一个单独的TM管理,即事务发出其所有的操作给一个特定的TM,所有为执行该事务所需
3、要的分布式计算由该TM管理。在响应事务的命令时,TM向DM发出命令,说明具体的存储数据项将被读或写。由DM对相应数据子集进行操作。一、集中式事务处理模式一个集中式DBMS可以看作是在一个站点上的只有一个TM机构的管理软件。⑴当一个事务T发出BEGIN操作时,TM给T初始化一个私有工作区。⑵当T发出READ(X)时,TM检查私有工作区是否包含X的一个副本。如果包含X的一个副本值并返回到T,否则TM发命令到相应的DM,检索X的一个副本值并返回到T,这个操作记为:DM-READ(X).⑶当T发出WRITE(X,VALU
4、E)时,如果私有工作区含有X则更新其值,否则建一个具有此新值的X的副本,并放入工作区。⑷当一个事务T发出END操作时,TM为每一个更新的逻辑数据项X发出DM-WRITE(X),使相应的DM对X所在的数据子集的X的值得到更新。当所有的DM-WRITE处理后,T的执行完成,撤销私有工作区。在这种模式下,可以把READ和WRITE看作是用户对数据库请求的事务级操作,而把DM-READ和DM-WRITE看作是对数据库的内部操作。两段提交(TWO-phaseCommit)提交工作分两步完成:⑴从T的私有工作区中复制X,Y,
5、Z,…..的值,并把这些值暂时放在安全的地方。如果在这一步中DBMS失效,则放弃事务的提交。⑵DBMS把X,Y,Z,…….的值复制到存储数据库。如果在这一步中DBMS失效,应启动恢复过程,从安全存储器中读出X,Y,Z,…的值,并重新提交,直到成功为止。二、分布事务处理模型1.DDBMS中的私有工作区一个事务T的私有工作区通常并不在与T的TM相同的场所,而是分布在包含T所访问数据的所有场所中。2.DDBMS中的两阶段提交问题在DDBMS中,由于可能一个场所失效而系统的其它部分继续工作,使得原子提交问题变得更加复杂与
6、困难。在分布式DBMS中,引入TM与DM之间的预提交操作(pre-commit)。这个操作使DM从私有工作区复制数据项到安全存储器。每个接收与提交的DM能够确定在提交活动中还有哪些DM参加。如果T的TM在发生所有的DM-WRITE之前失效,则尚未收到DM-WRITE的那些DM能够识别这些情况,并查询是否有DM收到DM-WRITE。如果有DM接收到DM-WRITE,则剩余的这些DM就像它们也接收到命令一样的进行执行。三、分布式事务处理模式⑴当一个事务T发出BEGIN操作时,T的TM给T初始化一个私有工作区;⑵当T发
7、出READ(X)时,TM检查私有工作区是否存在X的一个副本。如果包含X的一个副本,T就使用这个副本的值,否则TM选择X的某个存储副本Xi,DM从数据库中检索这个副本的值,把这个值存入私有工作区⑶当T发出WRITE(X,VALUE)时,如果工作区含有X的一个副本值,则将私有工作区相应的更新,否则建一个具有新值VALUE的X的副本。⑷当一个事务T发出END操作时,两段提交开始。对于T更新的每一个逻辑数据项X、X的每一个存储副本Xi,TM给Xi所在的DM发出Pre-Commit,在所有预提交处理以后,TM对所有由T更新
8、的逻辑数据项的所有副本发DM-WRITE。直到所有数据项的所有副本处理结束后T的执行结束。5.3分布式并发控制理论一、无干扰执行与可串行性考虑事务的一个集合T1…..Tn,令E0是这些事务的一个执行。E0最保险的实现策略是串行执行,即每一个事务是在下一个事务开始之前完成。如果这些事务的另一个执行E1中有事务的并行执行,但E1和E0在输出和对数据库的影响上都有相同的结果,则
此文档下载收益归作者所有