事务与并发控制.ppt_第1页
事务与并发控制.ppt_第2页
事务与并发控制.ppt_第3页
事务与并发控制.ppt_第4页
事务与并发控制.ppt_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、事务与并发控制,一. 事务,1事务的定义,事务(Transaction):用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。 事务是并发控制的基本单位。,2事务的特征(ACID),原子性(Atomicity):逻辑工作单位 一致性(Consistency):事务的执行结果必须使数据库从一个 一致性状态变到另一个一致性状态。 隔离性(Isolation):一个事务的执行不能被其他事务干扰。 持续性(Durability):事务一旦提交,它对数据库中数据的改 变就应该是永久性的。,3事务的控制,BEGIN TRANSACTION:事务开始 COMMIT:事务提交

2、 ROLLBACK:事务回滚 银行转帐,二. 并发控制,1概述,(1)事务的执行方式,串行: 并行:交叉并发方式(Interleaved Concurrency) 单处理机 同时并发方式(Simultaneous Concurrency)多处理机,(2)并发控制的必要性,多用户多任务带来的必然需求,火车定票系统 甲售票点(甲事务) 乙售票点(乙事务),读可售机票数:A=16,卖出一张票:A=A 1 (A=15),读可售机票数:A=16,卖出一张票:A=A 1 (A=15),t1,t2,t3,t4,t5,结果:卖出两张票,余额减少1,(3)并发操作的不一致性,丢失修改(Lost Update),

3、不可重复读(Non-Repeatable Read),读“脏”数据(Dirty Read),原因:破坏了隔离性 解决:调度操作,2封锁(Locking),事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他事务不能更新此数据对象。,基本封锁类 排它锁(Exclusive Locks, X锁):写锁,若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。保证了其他事务在T释放A上的锁之前不能再读取和修改A。 共享锁(Share Locks,

4、S锁):读锁,若事务T对数据对象A加上S锁,则事务T可以读取但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。,活锁和死锁,(1)活锁,事务排队:先来先服务,(2)死锁,死锁的预防,一次封锁法:每个事务一次将所有要使用的数据全部加锁,否则不能执行。扩大了封锁范围,降低了并发度 顺序封锁法:预先规定一个封锁循序,所有事务按预定顺序封锁。成本高,难于实现,死锁的诊断与解除 超时 等待图法,解除死锁:撤消事务,牺牲最小代价,T1,T2,T3,封锁的粒度,封锁的粒度:封锁对象的大小 逻辑单元(数据库,表,索引

5、) 物理单元(页,行),系统并发度与系统开销:,多粒度封锁:一个系统中同时支持多种封锁粒度,供不同的事务选择,Oracle的锁与事务,一. 锁控制,锁的粒度:表级、记录级,多粒度锁定允许一个事务锁定不同类型的资源。 小粒度(例如行):可以增加并发但需要较大的开销,因为如果锁定了许多行,则需要控制更多的锁。 大粒度(例如表):就并发而言是相当昂贵的,因为锁定整个表限制了其它事务对表中任意部分进行访问,但要求的开销较低,因为需要维护的锁较少。,自定义锁定,二. 事务控制,应用程序主要通过指定事务启动和结束的时间来控制事务。 事务是在连接层进行管理。当事务在一个连接上启动时,在该连接上执行的所有的

6、SQL 语句在该事务结束之前都是该事务的一部分。,1.启动事务,SQL语句自动启动一个新事务,直至commit 或者rollback;当该事务完成时,下一个SQL 语句又将启动一个新事务。,2.结束事务,COMMIT 如果事务成功,则提交。COMMIT 语句保证事务的所有修改在数据库中都永久有效。COMMIT 语句还释放资源,如事务使用的锁。 ROLLBACK 如果事务中出现错误,或者用户决定取消事务,可回滚该事务。ROLLBACK 语句通过将数据返回到它在事务开始时所处的状态,来恢复在该事务中所作的所有修改。ROLLBACK 还会释放由事务占用的资源。,3.错误处理,如果服务器错误使事务无法

7、成功完成,自动回滚该事务,并释放该事务占用的所有资源。如果客户端与 Server 的网络连接中断,那么当网络告知 Server 该中断时,将回滚该连接的所有未完成事务。如果客户端应用程序失败或客户计算机崩溃或重启,也会中断该连接,而且当网络告知 Server 该中断时,也会回滚所有未完成的连接。如果客户从该应用程序注销,所有未完成的事务也会被回滚。,如果出现运行时错误或编译错误,那么程序员应该编写应用程序代码以便指定正确的操作(COMMIT 或 ROLLBACK)。,4.事务隔离级别,事物隔离级别决定一个事务将如何影响其他访问同样数据的并发事务,以便事务不会彼此交互或影响。事物隔离级别设置决定

8、了锁策略的设置,悲观锁与乐观锁:,四种隔离级别:,READ UNCOMMITTED(未提交读) 执行脏读或 0 级隔离锁定,这表示不发出共享锁,也不接受排它锁。当设置该选项时,可以对数据执行未提交读或脏读;在事务结束前可以更改数据内的数值,行也可以出现在数据集中或从数据集消失,从而产生不可重复读取或幻像数据。该选项的作用与在事务内所有语句中的所有表上设置 NOLOCK 相同。这是四个隔离级别中限制最小的级别。,READ COMMITTED(提交读) 指定在读取数据时控制共享锁以避免脏读,但数据可在事务结束前更改,从而产生不可重复读取或幻像数据。,REPEATABLE READ(可重复读) 锁定查询中使用的所有数据以防止其他用户更新数据,但是其他用户可以将新的幻像行插入数据集,且幻像行包括在当前事务的后续读取中。因为并发低于默认隔离级别,所以应只在必要时才使用该选项。,SERIALIZABLE(串行化读) 在数据集上放置一个范围锁,以防止其他用户在事务完成之前更新数据集或将行插入数据集内。这是四个隔离级别中限制最大的级别。因为并发级别较低,所以应只在必要时才使用该选项。,事务级: SET TRANSACTION ISOLATION LEVEL READ COMMITTED; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论