国防科大数据库第八章:事务管理(1)

更新时间:2023-07-23 02:06:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

本讲(第八章)简要说明

授课目的与要求:掌握事务管理的有关概念以及并发控制的必要性及控制方法。

授课重点:事务的特性、串行化调度、两段封锁、基于时标的并发控制。授课难点:串行化调度、两段封锁。作业安排:p263 3,4,6,15,16

第八章事务管理

两个以上查询试图修改同一数据项

帐号

借款

贷款

余额

…..

1394567

1000

甲:读余额1000;取款800;写余额200。

乙:读余额1000;取款500;写余额500。

第八章事务管理

两个以上查询企图试图修改同一数据项系统在执行查询期间出现故障

只读查询与修改查询

为此,引入“事务”这一术语,它在数据库领域中被作为一致性和可靠性计算的基本单位。

1.数据库的一致性

假如一个数据库满足其上规定的所有一致性(完整性)约束,那么我们称此数据库处于一致性状态。注意:数据库可以在事务执行过程中出现暂时的不一致现象。重要的是数据库应该在事务终止后,处于一致性状态。数据库处于一致状态数据库可能暂时处于不一致状态数据库处于一致状态

事务开始

事务T执行

事务终止

2.可靠性

一个系统承受各种类型故障的弹性和恢复系统的能力。

一个有弹性的系统能够容忍系统故障,甚至在发生故障时能继续提供服务。

一个可恢复的DBMS能够在系统发生各种失败后,回到一致性的状态。3.事务管理

负责使数据库始终保持一致性状态,甚至在有并发访问和错误发生时。

Concurrency ControlT1 T2… Tn

DB (consistency constraints)

8.1 事务管理的基本概念

1. 什么是事务

直观来说,事务要在数据库上完成动作,引起状态转移,生成数据库的一个新版本。

一般来说,一个事务可以看作是由对数据库的读写操作与计算步骤一起构成的序列。 嵌入了数据库访问的程序 显示说明的一个事务 单个或多个SQL语句的集合

例1 DATABASE(C3)课程的成绩普遍增加10%.UPDATE SC

SET GRADE= GRADE*1.1WHERE C-NO = “C3”

这一查询交户执行就是一个事务,也可以由嵌入式SQL表示,并通过指定名字和作出如下说明使其成为一个事务。

Begin_transaction GRADE_UPDATEBegin

EXEC SQL UPDATE SC

SET GRADE = GRADE*1.1WHERE C-NO = “C3”

End

例2 假设有一个航空订票数据库系统,关系FLIGHT记录了每次航班的有关数据,关系CUST记录了预定航班的所有顾客的信息,关系FC记录了哪个顾客预定了哪一次航班的信息。这些关系的定义如下:(有下划线的属性构成关键字)

FLIGHT CUST FC 航班号,日期;SRC,DEST----起点,终点。STSOLD----已售座位个数;

CAP----旅客容量。

旅客姓名;ADDR----地址;BAL----资金差额。SPECIAL----旅客订票的特殊要求。

我们考虑一种简化的典型的订票情况:订票代办处输入航班号,起飞日期以及订票的顾客姓名,向航空公司订票。

完成此功能的事务实现如下(嵌入式SQL语言):

Begin_transaction ReservationBegin

input(flight_no, date, customer_name); (1)EXEC SQL UPDATE FLIGHT (2)

SET STSOLD = STSOLD+1WHERE FNO = flight_noAND DATE = date;

EXEC SQL INSERT (3)

INTO FC(FNO,DATE,CNAME,SPECIAL)VALUES(flight_no, date, customer_name, null);output(“reservation completed”) (4) End.

考虑可能没有座位的情况,航空订票事务修改如下:Begin_transaction Reservation begin input (flight_no, date, customer_name); EXEC SQL SELECT STSOLD, CAP FOR UPDATE INTO temp1, temp2 FROM FLIGHT WHERE FNO= flight_no AND DATE=date; if temp1= temp2 then begin output (“no free seats”); abort end

else begin EXEC SQL UPDATE FLIGHT SET STSOLD= STSOLD+ 1 WHERE FNO= flight_no AND DATE= date; EXEC SQL INSERT INTO FC(FNO,DATE,CNAME,SPECIAL) VALUES(flight_no,date,customer_name,null); commit; output (“reservation completed”) end end-if End.

2.基本操作与状态

8.1事务管理的基本概念

1)事务开始:开始执行。 2)事务读写:进行数据库操作。 3)事务结束:完成所有操作。 4)事务交付:完成所有操作,并保存所有结果。 5)事务撤消:执行途中出现异常,系统或用户撤消事务。交付活跃撤消读写操作事务的起点撤消终止事务的终点交付

事务开始

UPDATE DELETE COMMIT INSERT CREATE INSERT… Log off

T1 T2 T3 T4

3. 系统赋予事务的特性

1)原子性(Atomicity):事务的所有操作或全部完成,或全部不作。原子性在于保证正确性。如银行转帐,取款机。

2)一致性(Consistency),可串性(Serializability):多个事务并发执行与它们的某一串行执行的结果等价。

3)隔离性(Isolation):任何事务不能访问到其他未交付事务的中间结果,防止多米诺效应。

4)持久性(Durability):保证已交付事务的结果不丢失,且与以后的故障无关。

DBMS用并发控制机制维持可串性、隔离性,用恢复机制维持原子性持久性

1) Atomicity

事务的原子性要求:假如事务的执行被任何故障打断,DBMS要决定如何处理事务的故障恢复。一般有两类故障。一类是事务本身可能的故障,由于输入数据的错误,死锁或其它因素产生失败。此时保持事务的原子性称为事务恢复。另一类是系统崩溃,如:介质故障,处理机故障,通信链路断开,断电等。这种情况下保持事务的原子性称为崩溃恢复。

这两种故障的区别是,在发生系统崩溃期间,易失性存储器(内存)中的信息可能会丢失或不能访问。

2) Consistency

事务的一致性就是它的正确性。

换一句话说,事务是将数据库的一个一致性状态转化到另一个一致性状态的正确程序。

事务的一致性不仅是语义数据控制(完整性约束)的重点,也是并发控制机制的目标。

例3 考虑以下两个并发事务(T1和T2),它们都要访问数据项x。假设x 的值在它们执行之前为50。T1:

Read(x) x ←x + 1Write(x)Commit

T2:

Read(x)x ←x + 1Write(x)Commit

8.1事务管理的基本概念

Storage hierarchyX

x Memory Memory

x Disk

The space of disk blocks The virtual or main memory address space The local address space of the transaction

Input (x): block with x →memoryOutput (x): block with x →disk

Read (x,t): do input(x)if necessary

t ←value of x in block

Write (x,t): do input(x)if necessary

value of x in block ←t

本文来源:https://www.bwwdw.com/article/k90m.html

Top