第六章 分布式事务管理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基本概念
事务具体操作描述,可得到事务的偏序集 : 事务具体操作描述,可得到事务的偏序集T: A T={B, T={B,R1,R2 , W1,W2,W3,W4,W5,W6,C} 或描述为: 或描述为: A T={B, T={B,O1,O2, O3,O4,O5,O6,O7,O8,C} 其中: 其中: 事务开始; B:事务开始; 读操作; R:读操作; 写操作; W:写操作; 事务中断或事务夭折; A:事务中断或事务夭折; 事务提交或事务完成; C:事务提交或事务完成; 操作。 O:(读/写)操作。 一个事务是一系列对数据库的操作组成的操作集, 一个事务是一系列对数据库的操作组成的操作集,事 务提交意味该事务正常操作完成,否则事务操作失败。 务提交意味该事务正常操作完成,否则事务操作失败。
第六章分布式事务管理
事务的概念、 事务的概念、特性及模型 分布式事务 分布式事务管理的实现 分布式事务的提交协议
基本概念
事务: 事务:事务是由若干个为完成某一任务而逻辑相关的操作 组成的操作序列,是数据库上的一个执行单位。 组成的操作序列,是数据库上的一个执行单位。 Transaction, is a sequence of database operations organized in a basic unit for keeping database consistent and reliable. A database should be in a consistent state even if there are a number of concurrent transactions accessing the database. A database is reliable if it is resilient and capable of recovering.
DAG Representation
A partial order can be represented by a DAG (Directed Acyclic Graph) whose vertices are the operations and edges are ordering. Example: < = {(R(x),W(x)), (R(y),W(x)), (W(x),C), (R(x),C), (R(y),C)} R(x) W(x) C
基本概念
事务的结构 事务的结构可描述为: 事务的结构可描述为:
Begin Transaction 数据库的操作
提交(commit) 提交( )
废弃( 废弃(abort) )
提交(commit) 将事务所做的操作结果永久化, 提交(commit):将事务所做的操作结果永久化,使数据库从事 务执行前的状态改变到事务执行后的状态。 务执行前的状态改变到事务执行后的状态。 废弃(abort):把事务所做的操作全部作废, 废弃(abort):把事务所做的操作全部作废,使数据库保持事 ):把事务所做的操作全部作废 务执行前的状态。 务执行前的状态。
事务的基本性质
原子性体现为: 原子性 事务所包含的操作要么全部完成,要么什么也没做; 事务所包含的操作要么全部完成,要么什么也没做; 如果事务由于故障中断执行,则部分结果必须被反做 UNDO) 也就是说, (UNDO)。也就是说,事务的原子性保证数据库的状态总是从 一个一致的状态变化到另一个一致的状态, 一个一致的状态变化到另一个一致的状态,不会出现不一致的 中间状态。 中间状态。 由于输入错误、系统过载、死锁等导致的事务废弃, 由于输入错误、系统过载、死锁等导致的事务废弃,而需要 进行的原子性维护处理,称为事务恢复。 进行的原子性维护处理,称为事务恢复。 由于系统崩溃(死机、掉电) 由于系统崩溃(死机、掉电)导致事务废弃或提交结果的丢 失而进行的原子性维护处理,称为故障恢复。对提交结果的处 失而进行的原子性维护处理,称为故障恢复。 称为重做 REDO) 重做( 理,称为重做(REDO)。
基本概念
航班订票系统
设:航班订票数据库中有航班信息表(Flight) 航班订票数据库中有航班信息表( ) 和顾客订座表( )。其说明如下: )。其说明如下 和顾客订座表(FC)。其说明如下: FLIGHT{Fno(航班号 ,Date(日期 , 航班号), 日期), 航班号 日期 Src(出发地 ,Dest(目的地 ,StSold(卖出 出发地), 目的地), 卖出 出发地 目的地 席位) 座席数)} 席位 ,Capacity(座席数 座席数 FC{Fno(航班号 ,Date(日期 , 航班号) 日期), 航班号 日期 Cname(客户姓名 ,Special(客户信息 客户姓名) 客户信息)} 客户姓名 客户信息
Begin input (Flight_no,Cdate,Customer_name); EXEC SQL SELECT StSold,Capacity INTO temp1,temp2 FROM FLIGHT WHERE Fno= Flight_no AND Date= Cdate; If temp1=temp2 then Output(“no free seats”);/*无空座*/ Abort; Else EXEC SQL UPDATE FLIGHT SET StSold= StSold+1 WHERE Fno= Flight_no AND Date= Cdate; EXEC SQL INSERT FLIGHT INTO FC(Fno,Date, Cname, Special) VALUEs (Flight_no,Cdate,Customer_name, null); Commit; Output(“reservation complete”);/*订票完成*/
基本概念
A database is in a consistent state if it follows:
– – – – Entity integrity Referential integrity Domain value constraints etc.
A temporary inconsistent state of a transaction should not be exposed to other transactions.
事务的基本性质
事务是对数据库的一个操作序列,更确切地说,事务是保证 事务是对数据库的一个操作序列,更确切地说, 数据库正确的最小运行单位。应具有以下四个特性: 数据库正确的最小运行单位。应具有以下四个特性: 原子性( 原子性(Atomicity) ) 一致性( 一致性(Consistency) ) 隔离性( 隔离性(Isolation) ) 耐久性(Durability) 耐久性( ) ATOMICITY ➠ all or nothing CONSISTENCY ➠ no violation of integrity constraints ISOLATION ➠ concurrent changes invisible È serializable DURABILITY ➠ committed updates persist
Endif End;
订票事务的处理逻辑可概括如下: 订票事务的处理逻辑可概括如下: 表中StSold,Capacity信 读FLIGHT 表中 , 信 息; 则订票事务可描述如下: 则订票事务可描述如下: 表中StSold信息; 信息; 写FLIGHT 表中 信息 begin_transaction reservation 写FC记录; 记录; 记录
基本概念
基本概念
订票事务内的具体操作描述如下: 订票事务内的具体操作描述如下:
begin_transaction reservation B begin input (Flight_no,Cdate,Customer_name); , , ; R1 temp←read(FLIGHT(Flight_no,Cdate). StSold); ← , ; R2 if temp≡(FLIGHT(Flight_no,Cdate). Capacity then ≡ , begin Output(“no free seats”);/*无空座 无空座*/ ; 无空座 A Abort; end Else begin W1 Write (FLIGHT(Flight_no,Cdate). StSold,temp+1); , , ; W2 Insert (FC,fc); , ; W3 Write(FC.Fno,Flight_no); , ; W4 Write(FC. Date,Cdate); , ; W5 Write(FC. Cname,Customer_name); , ; W6 Write(FC. Special,null); , ; C Commit; ; Output(“reservation complete”);/*订票完成 订票完成*/ ; 订票完成 Endif End;
Example of Transaction
For : A transaction T consisting of operations Read(x) Read(y) x←x+y wenku.baidu.com Write(x) Commit ∑ = {R(x), R(y), W(x), C} < = {(R(x),W(x)), (R(y),W(x)), (W(x),C), (R(x),C), (R(y),C)}
R(y) Note no order exists between R(x) and R(y) A transaction can be simplified by using its relative order of operations, e.g. the above T can be written as T={R(x), R(y),W(x),C}
基本概念
A transaction is a sequence of read and write operations on a DB with some special properties (ACID).
An SQL statement is a transaction. An embedded SQL statement is a transaction. A program enclosed by “Begin-transaction” and “end” is a transaction. Transaction BUDGET_UPDATE begin EXEC SQL UPDATE PROJ SET BUDGET = BUDGET∗1.1 ∗ WHERE PNAME = “CAD/CAM” end.
Formalization
Let ➠ Oij(x) be some operation Oj of transaction Ti operating on entity x, where Oj ∈ {read,write} and Oj is atomic ➠ OSi = ∪j Oij ➠ Ni ∈ {abort,commit} Transaction Ti is a partial order Ti = {Σi, <i} where ❶ Σi = OSi ∪ {Ni } ❷ For any two operations Oij , Oik ∈OSi , if Oij = R(x) and Oik = W(x) for any data item x, then either Oij <i Oik or Oik <i Oij ❸ ∀Oij ∈OSi, Oij <i Ni
Characterization of Transactions
Read Set (RS) – the set of data items that a transaction reads Write Set (WS) – the set of data that a transaction writes Base Set (B) -- RS∪WS