数据库事务管理综述.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
数据库事务管理 事务(Transaction) 事务是构成单一逻辑工作单元的操作集合。 为什么需要事务的概念呢? 恢复的需要并发操作的需要 一、事务(Transaction)用户定义的一个对数据库读写操作序列一个不可分割的工作单位数据库恢复和并发控制的基本单位数据库系统中通常有多个事务并行运行事务和程序比较在关系数据库中,一个事务可以是一条或多条SQL语句,也可以包含一个或多个程序。一个程序通常包含多个事务 事务的性质——ACID原子性(Atomicity)事务中的操作要么都做,要么都不做 (All or None)一致性(Consistency)事务执行的结果必须使数据库从一个一致性状态变到另一个一致性状态与原子性密切相关隔离性(Isolation)并发执行的各事务不能相互干扰,这表明事务必须是独立的持续性/永久性(Durability)事务一旦提交,它对数据库的修改被永久保持,不再受后继操作或故障的影响★ DBMS中事务处理必须保证其ACID特性,这样才能保证数据库中数据的安全和正确。 事务的操作基于简化的表达方式,可把事务涉及的基本存取操作分为以下两种:read(X):从数据库中将数据对象X读入到执行read操作的事务的一个局部缓冲区中。 write(X):从执行write的事务的局部缓冲区把数据对象X写入数据库。write操作的结果可以暂时存储在内存中,DBMS的恢复子系统和底层操作系统协同控制,以决定写回磁盘的时机 事务管理 数据库事务管理由两部分功能构成:并发控制和恢复。并发控制(或调度)机制:保障在多个应用程序并发运行的情况下,它们之间互不干扰,产生正确的结果。恢复机制:保障在发生故障时,系统有一定的恢复能力,使数据库能恢复到故障前的正确一致状态。 并发控制并发控制机制的任务对并发操作进行正确调度保证事务的隔离性保证数据库的一致性 并发操作带来的数据不一致性丢失修改(Lost Update)不可重复读(Non-repeatable Read)读“脏”数据(Dirty Read)干扰问题 并发操作引起的丢失修改T1读A=16A=A-1写回A=15T2读A=16A=A-1写回A=15机票销售事务T1对数据的修改被事务T2的修改覆盖 并发操作引起的不可重复读事务T1读取某一数据后,事务T2对其做了修改,当T1按同样条件再读时得到不同的值事务T1读取某些数据后,事务T2删除(或插入)了一些记录,当T1按同样条件再读时发现少(或多)了一些记录(幻像读)T1读A=50,B=100求A+B=150读A=50,B=200求A+B=250T2读B=100B=B*2写回B=200银行系统 并发操作引起的读脏数据 事务T1 修改了某数据并写回磁盘,事务T2 读取了同一数据后,T1由于某种原因被撤销,被修改的值复原,此时T2读到的数据与数据库中的数据不一致。T1读C=100C=C*2写回C=200ROLLBACKC恢复为100T2读C=200 可串行性 可串行性通常看作是多个事务并发执行的正确性准则。具体判定方法如下: 各单个事务如能将数据库从一个正确状态转变为另一个正确状态,则认为该事务是正确的; 按任何一个串行顺序依次执行多个事务也是正确的(这里的串行顺序假定各个事务间彼此独立、不交叉); 事务的交叉执行过程是正确的,当且仅当其与串行执行过程等价,则事务是可串行化的。 并发控制的主要技术封锁技术 (Locking) ★时间戳技术(Timestamp)其他:乐观控制法 封锁事务T在对某个数据对象(如数据库、表、记录等)操作之前,首先向系统发出加锁请求以便获得对数据对象相应的控制在事务T释放它所获得的锁之前,其他事务不能更新此数据对象 锁的分类排它锁(eXclusive lock):写锁 若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。共享锁(Share lock):读锁 若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。 T1T2T1T2T1T2Xlock A获得Xlock A读A = 16A = A -1写回A = 15CommitUnlock AXlock A等待等待 获得Xlock A读A = 15CommitUnlock A等待等待A = A -1写回A = 14Slock ASlock B读A = 50求和 = 150读A = 50CommitUnlock AXlock B等待等待 获得Xlock B读B = 100CommitUnlock B等待等待B = B * 2写回B = 200读

文档评论(0)

潮起潮落 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

认证主体陈**

1亿VIP精品文档

相关文档

相关课程推荐