欢迎来到天天文库
浏览记录
ID:39536489
大小:510.10 KB
页数:60页
时间:2019-07-05
《《数据库管理》PPT课件(I)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章数据库管理教学内容理解事务的概念及其处理模型熟悉数据库系统中并发控制的基本方法理解数据库故障恢复策略掌握数据库完整性约束和安全性控制的实现方法教学重点事务处理模型加锁协议完整性约束教学难点并发操作事务定义事务(Transaction)是DBMS的执行单位,由有限的数据库操作序列组成例:银行转账业务账号姓名余额A张三800B李四400UPDATE账户SET余额=余额-100WHERE账号=‘A’UPDATE账户SET余额=余额+100WHERE账号=‘B’700500400事务事务性质1:原子性(Atomicity)Nothi
2、ngorAll:不允许事务部分完成COMMIT语句:提交该事务对数据库的所有修改,使其成为数据库中永久的一个部分,表示一个事务成功地结束ROLLBACK语句:撤销该事务对数据库的所有修改,将事务回滚到事务的起点,即全部不执行事务的操作序列由DBMS的事务管理子系统实现事务性质2:一致性(Consistency)事务对数据库的作用应使数据库从一个一致状态转变到另一个一致状态数据库的一致状态是指数据库中的数据满足完整性约束,即数据的完整性约束不会因事务的执行而被破坏例如,银行转账业务的完整性约束条件为转账前后账号A与B的余额之和相等账
3、号姓名余额A张三800B李四400账号姓名余额A张三700B李四400账号姓名余额A张三700B李四500事务性质3:隔离性(Isolation)如果多个事务并发执行,应像各个事务独立执行一样,互不干扰由DBMS的并发控制子系统实现/*事务T1*/UPDATE账户SET余额=余额-100WHERE账号=‘A’UPDATE账户SET余额=余额+100WHERE账号=‘B’/*事务T2*/DECLARE@SINT,@SAINT,@SBINTSELECT@SA=余额FROM账户WHERE账号=‘A’SELECT@SB=余额FROM账户W
4、HERE账号=‘B’SET@S=@SA+@SB执行的时间顺序/*事务T1*/UPDATE账户SET余额=余额-100WHERE账号=‘A’UPDATE账户SET余额=余额+100WHERE账号=‘B’/*事务T2*/DECLARE@SINT,@SAINT,@SBINTSELECT@SA=余额FROM账户WHERE账号=‘A’SELECT@SB=余额FROM账户WHERE账号=‘B’SET@S=@SA+@SB事务性质4:持久性(Durability)一个事务成功执行后,对数据库的影响应是永久的,即使是数据库因故障被破坏,DBMS也应
5、该能够恢复由DBMS的事务管理子系统和恢复管理子系统配合实现事务处理模型ANSI/ISOSQL事务模型规定用户或程序始终处于事务处理状态,用户或程序执行的第一个SQL语句是一个事务的开始,当遇到以下四种情况之一时,该事务将结束执行COMMIT语句,当前事务成功结束,立即开始一个新事务执行ROLLBACK语句,当前事务异常结束,立即开始一个新事务对于SQL程序而言,程序正常结束表示当前事务也结束了,无新事务开始对于SQL程序而言,程序异常结束表示当前事务也结束了,无新事务开始事务处理模型SQLSERVER的事务处理模型在编写程序时,
6、应把事务用事务开始语句和结束语句加以限定BEGINTRANSACTION语句表示一个事务的开始COMMITTRANSACTION语句表示一个事务的成功结束,但不能自动开始一个新事务可通过SAVETRANSACTION语句在事务中间建立一个保存点(Savepoint)通过ROLLBACKTRANSACTION语句可以该事务所有的更新操作,回滚到事务寝状态(如果设有保存点,将只放弃保存点之后的更新操作,回滚到保存点的状态)事务状态变迁图活动状态读/写局部提交状态提交状态失败状态异常中止状态事务开始执行后,立即进入活动状态在活动状态,事
7、务将执行对数据库的读/写操作,但写操作的结果并不立即写到磁盘,可能暂存在缓冲区中事务的最后一个语句执行之后,进入局部提交状态,事务并未真正结束,对数据库的修改可能还在缓冲区中处于活动状态的事务没有达到最后一个语句就中止执行,将进入失败状态处于局部提交状态的事务遇到故障也进入失败状态处于失败状态的事务可能已对磁盘中的数据进行了一部分修改,为保证事务的原子性,事务将进入异常中止状态,由DBMS的恢复子系统决定重新启动事务或取消事务事务进入局部提交状态后,DBMS的并发控制子系统将检查该事务与并发事务是否发生干扰现象,通过检查后,系统执
8、行提交操作,把对数据库的修改全部写到磁盘上,并通知系统,事务成功结束,事务进入提交状态SQLSERVER事务处理实例事务处理后数据库状态事务处理前数据库状态BEGINTRANSACTIONINSERTDELETESAVETRANSACTION AU
此文档下载收益归作者所有