编辑: hgtbkwd | 2019-07-14 |
第七章 系统实现技术 7.
1 事务 7.2 数据库的并发控制 7.3 DB的恢复 7.4数据库的安全性 7.5数据库的完整性 * 7.1.1 事务的基本概念 定义:事务是形成一个逻辑工作单位的数据库的操作的汇集.或:是由用户定义的一个DB的操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位. 事务和程序是两个概念,一般的,一个程序可包含多个事务.程序 ? 事务 7.1 事务 * 事务的定义 显示定义 事务以begin transaction 开始 事务以end Transaction结束 commit 提交 roll back回退 默认按缺省自动划分(隐式) 事务的基本概念 默认(隐式)有:ALTER TABLE 、CREATE 、DELETE、 DROP、 FETCH、 INSERT 、OPEN 、SELECT、 UPDATE等7.1.1 * 例:定义一个未提交的事务.BEGIN TRANSACTION T1GOUPDATE S SET SDEPT='
计算机'
WHERE SDEPT='
aa'
GOBEGIN TRANSACTION T1GOUPDATE S SET SDEPT='
计算机'
WHERE SDEPT='
aa'
ROLLBACK TRANGO 事务的基本概念 7.1.1 * 例:定义一个提交的事务.BEGIN TRANSACTION T1GOUPDATE S SET SDEPT='
计算机'
WHERE SDEPT='
aa'
COMMIT TRANGO--注意:打开S表看结果BEGIN TRANSACTION T1GOUPDATE S SET SDEPT='
计算机'
WHERE SDEPT='
aa'
ROLLBACK TRANGO--注意:同样打开S表看结果 事务的基本概念 7.1.1 * 7.1.2 事务的ACID性质 为了保证DB的完整(正确),事务应具有以下四个性质 1. 原子性(atomicity) 一个事务是不分割的操作序列,要么全做,要么全不做. 2. 一致性(consistency) 事务的执行必须从一个使DB一致的状态到另一个是使DB一致的状态.既:DB不会因事务的执行而遭受破坏. 如:一公司在银行有两个帐号.从A帐号―>
B帐号转10000元,既可定义一个事务. A-10000 B+10000 7.1 事务 * 7.1.2 3. 隔离性(isolation) 一个事务的执行不能被其他事务打扰,在并发事务操作时,系统应保证与这些事务独执行时结果一样. 4. 持久性(durability) 一个事务一旦完成全部操作后,它对DB的所有更新应永久反映在DB中.即使以后系统发现故障,也应保留这个事务的结果. 上述四个性质分别有DBMS相应的子系统实现. A: 由DBMS的事务管理子系统实现. C: 由DBMS测试完整性约束自动完成. D: 由DBMS恢复控制子系统实现. I: 由DBMS的并发控制子系统实现 事务的ACID性质 * 对DB的访问是建立在读,写两个操作的基础上的 . read(x): 把数据X从DB读到内存缓冲区 . write(x): 把数据X从内存缓冲区写回DB (在实际操作时,write(x)未必就写回DB很可能先暂存在系统缓冲区,然后再写回硬盘.先假定write(x)写回磁盘.) 举例说明事务的ACID性质: 例:银行DB有转帐事务T1,从帐号A转50元到帐号B T1: read(A) A:=A-50Write(A) Read(B) B:=B+50Write(B) 7.1.2 事务的ACID性质 * (1) 原子性: 由事务的原子性保持事务的一致性,但事务的执行有一定的时间,在某一个时刻会不一致,是正常的 (2) 一致性: A-50,B+50 A+B的和不变 (3) 隔离性: 在A-50后,突然插入一个事务来计算A+B,那肯定会不对,这就要由DBMS的并发控制来控制. (4) 持久性: 事务正确执行后,仍长期保存,不能丢失 7.1.2 事务的ACID性质 * 7.1.3 事务的状态变迁 begin read/write transaction 活动 end transaction abort 局部提交 commit 提交失败 roll back 异常终止 7.1 事务 *
1、活动状态: 事务开始执行,即进入 活动 状态,在活动状态执行对DB进行读/写,但 写 并不立即写到硬盘,可暂存在系统缓冲区. 7.1.3 事务的状态变迁 begin read/write transaction 活动 end transaction abort 局部提交 commit 提交失败 roll back 异常中止 *