欢迎来到天天文库
浏览记录
ID:45143456
大小:639.00 KB
页数:29页
时间:2019-11-10
《第7章 事务管理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第7章事务管理《数据库原理及应用》前言事务是由若干个数据操作组成的一个完整的逻辑工作单元。事务管理是数据库系统的重要的组成部分。数据库系统在多个事务并发执行和可能出现故障的情况下,都要保证事务的正确执行。27.1事务的基本概念7.1.1事务的ACID性质1什么是事务事务是由若干个数据操作组成的一个完整的逻辑工作单元。(可以理解为:事务是构成一个完整的逻辑工作单元的数据库操作的集合)例如:用户购书:需要同时完成库存数减少、增加客户订单两步操作。我们要求这两个操作,要么都发生,要么都不发生。否则就会出现书籍的库存减少而没有出
2、现相应的订单的情况。使得信息不能够真实地反映现实的情况。37.1事务的基本概念(续)2事务的进一步描述:事务是数据库系统的基本工作单元。是由事务开始语句和事务结束语句之间的所有的操作组成。通常由数据操纵语言和高级编程语言所规定。事务和程序是两个概念:在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。而一个应用程序通常包含多个事务。(萨师煊:事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位)47.1事务的基本概念(续)3事务的ACID性质为了保证数据的完整性,
3、要求数据库系统中执行的事务具有四个性质:原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)就是常说得ACID性质57.1事务的基本概念(续)3事务的ACID性质(续)原子性:一个事务中的所有操作是一个完整的工作单元,这些操作要么都发生,要么都不发生。一致性:一个事务单独执行时的结果,应该保持数据库的正确和完整,即数据不会因事务的执行而破坏。一致性状态:数据库中只包含成功事务提交的结果不一致状态:数据库中包含失败事务的结果67.1事务的基本概念(续)举例:
4、银行转帐:从帐号A中取出一万元,存入帐号B。定义一个事务,该事务包括两个操作这两个操作要么全做,要么全不做全做或者全不做,数据库都处于一致性状态。如果只做一个操作,数据库就处于不一致性状态。T:read(A)A=A-10000write(A)read(B)B=B+10000write(B)书中的例子:T:read(stock_A)stock_A=stock_A-10write(A)read(B)order_A=order_A+10write(B)77.1事务的基本概念(续)3事务的ACID性质(续)隔离性:在多个事务并发
5、执行时,系统应保持执行结果与这些事务按先后次序串行执行的结果一样。例如:对于任何一对事务Ti和Tj,在Ti看来,Tj或者在Ti开始之前已经完成,或者在Ti完成之后再开始执行,这样,每个事物都察觉不到系统中有其他事务在并发执行,就好像在单用户环境中一样。87.1事务的基本概念(续)对并发控制的理解:如果没有锁定,且多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生问题,导致数据库中的数据的不一致性。一个最常见的并发操作的例子是火车/飞机订票系统中的订票操作。例如,在该系统中的一个活动序列:1、甲售票员
6、读出某航班的机票张数余额A,设A=16;2、乙售票员读出同一航班的机票张数余额A,也是16;3、甲售票员卖出一张机票,修改机票张数余额A=A-1=15,把A写回数据库;4、乙售票员也卖出一张机票,修改机票张数余额A=A-1=15,把A写回数据库。结果明明卖出两张机票,数据库中机票余额只减少1。97.1事务的基本概念(续)3事务的ACID性质(续)持久性:一个事务一旦成功完成后,他对数据库的改变必须是永久的,即使是发生了故障。可以通过以下两个方法之一来实现持久性事务所有的更新在事务结束前全部写入磁盘。在事务结束前已写到磁盘
7、上的相关信息,足以让数据库系统在故障出现后,重新启动系统时恢复事务已经执行的所有的更新。107.1事务的基本概念(续)7.1.3事务的并发执行数据库系统通常允许多个事务并发执行,其动机就如操作系统中使用多道程序设计一样。允许事务并发执行的主要优点有:(1)提高吞吐量(2)减少平均响应时间现代数据库应用都要求系统具有较高的并发度,尤其是随着internet的发展,许多web应用要同时处理成千上万个在线的数据库访问。硬件技术的发展也要求提高事务执行的并发度。117.2-7.3并发控制和锁简单介绍并发控制和锁。1并发控制数据库
8、是一个共享资源,可以供多个用户使用,允许多个系统同时使用的数据库系统,在同一时刻并行运行的事务数可达数百个。事务可以一个一个串行执行,即每一个时刻只有一个事务运行,其他事务必须等到这个事务结束后方能运行。但是,将造成许多系统资源处于空闲状态。因此为了充分的利用系统资源,发挥数据库共享资源的特点,应该允许多个事务并行的
此文档下载收益归作者所有