SQL Server 2005数据库应用与开发教程教学课件 ppt 作者 978-7-302-16021-2 ch05

上传人:E**** 文档编号:89361406 上传时间:2019-05-24 格式:PPT 页数:47 大小:435.50KB
返回 下载 相关 举报
SQL Server 2005数据库应用与开发教程教学课件 ppt 作者  978-7-302-16021-2 ch05_第1页
第1页 / 共47页
SQL Server 2005数据库应用与开发教程教学课件 ppt 作者  978-7-302-16021-2 ch05_第2页
第2页 / 共47页
SQL Server 2005数据库应用与开发教程教学课件 ppt 作者  978-7-302-16021-2 ch05_第3页
第3页 / 共47页
SQL Server 2005数据库应用与开发教程教学课件 ppt 作者  978-7-302-16021-2 ch05_第4页
第4页 / 共47页
SQL Server 2005数据库应用与开发教程教学课件 ppt 作者  978-7-302-16021-2 ch05_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《SQL Server 2005数据库应用与开发教程教学课件 ppt 作者 978-7-302-16021-2 ch05》由会员分享,可在线阅读,更多相关《SQL Server 2005数据库应用与开发教程教学课件 ppt 作者 978-7-302-16021-2 ch05(47页珍藏版)》请在金锄头文库上搜索。

1、2019年5月24日,第1页,第5章 事务和锁,SQL SEVER 2005数据库应用与开发教程 清华大学出版社,教学目标 教学重点,2019年5月24日,第2页,本章的学习目标,掌握事务的基本概念及几个基本特性 掌握事务的工作原理并了解事务的类型 掌握事务回滚机制以及使用事务的考虑事项 掌握锁的基本概念及没有锁机制带来的几类问题 了解锁的空间及锁的分类和锁的分类及隔离级别 掌握如何在SQL Sever中查看数据库中的锁 了解锁在应用程序中的应用,2019年5月24日,第3页,教学重点,事务的工作原理 事务回滚机制 锁及锁机制,2019年5月24日,第4页,5.1事务(Transaction)

2、,SQL Server通过支持事务机制管理多个事务,保证事务的一致性。 事务(Transaction)是一种机制,是一个操作序列,它包含了一组数据库操作命令,所有的命令作为一个整体一起向系统提交或撤消操作请求,即要么都执行,要么都不执行,因此,事务是一个不可分割的工作逻辑单元,2019年5月24日,第5页,如何定义事务,BEGIN TRANSACTION COMMIT ROLLBACK,2019年5月24日,第6页,如何定义事务,事务通常BEGIN TRANSACTION 命令来标识一个事务的开始 而用COMMIT TRANSACTION 命令标识事务结束,2019年5月24日,第7页,结束事

3、务的方法,两种方法可以结束事务: 1. Commit(提交)。如果所有的操作都完成了的话,可以结束事务,可以向系统对事物进行提交,提交之后,所有的修改都会生效了,在没有提交之前,所有的修改都可以作废的。 2. Rollback(回滚)。回滚会结束当前事务,并且放弃自事务开始以来所有的操作,回到事务开始的状态。,2019年5月24日,第8页,5.1.3事务的特性,1. 原子性(Atomicity) 2.一致性(Consistency) 3. 隔离性(Isolation) 4. 持久性(Durability),2019年5月24日,第9页,1. 原子性(Atomicity),原子性不可分割性,这里

4、是指事务作为数据库的一个逻辑工作单位,对其的操作要么执行全部数据的修改,要么全部数据的修改都不执行。,2019年5月24日,第10页,2.一致性(Consistency),一致性是指当事务完成时,必须使所有数据都具有一致的状态。事务执行的结果必然是把数据库从一个一致性状态过渡到另一个一致性状态。 因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。,2019年5月24日,第11页,3. 隔离性(Isolation),隔离性是指由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,

5、事务不会查看中间状态的数据,这也称为可串行性。,2019年5月24日,第12页,4. 持久性(Durability),持久性是指当一个事务完成之后,它的影响永久性的产生在系统中,也就是这种修改写到了数据库中。 一旦一个事务被提交后,它就一直处于已提交的状态。数据库产品必须保证,即使存放数据的驱动器损坏了,它也能将数据恢复到硬盘驱动器损坏之前,最后一个事务提交时的瞬间状态。,2019年5月24日,第13页,5.1.4 事务的工作原理,事务的工作原理如图所示:,2019年5月24日,第14页,事务恢复和检查点示例图,2019年5月24日,第15页,5.1.5事务的类型,一种是系统提供的事务 另一种

6、是用户定义的事务。,2019年5月24日,第16页,5.1.6 事务回滚(Transaction Rollback),事务回滚(Transaction Rollback)是指当事务运行过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已经完成的操作全部撤销,滚回到事务开始的状态。 这里事务的操作是指对数据库的更新操作。,2019年5月24日,第17页,如何定事务回滚,事务回滚使用 ROLLBACK TRANSACTION 命令 其语法如下: ROLLBACK TRANSACTION transaction_name | tran_name_variable| savepoint

7、_name | savepoint_variable 其中 savepoint_name 和savepoint_variable 参数用于指定回滚到某一指定位置。,2019年5月24日,第18页,5.2锁(Lock),对于多用户系统来说,锁机制是必须的,它实质上就是一种并发控制机制。 多个用户能够同时操纵同一个数据库中的数据,可能会发生数据不一致的现象。并发控制主要是考虑到多个用户同时存取数据库中的同一数据的情况。,2019年5月24日,第19页,5.2.1 事务的缺陷,1.脏读(Dirty Reads) 2.不可重复读(Non-Repeatable Reads) 3.幻觉读(Phantom

8、Reads) 4.丢失更新(Lost Updates),2019年5月24日,第20页,1.脏读(Dirty Reads),所谓“脏读”就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。,2019年5月24日,第21页,当事务2读到事务1尚未提交的修改时,就发生了脏读,2019年5月24日,第22页,2.不可重复读(Non-Repeatable Reads),所谓“不可重复读”是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第

9、二个事务的修改,第一个事务两次读到的数据可能是不一样的,因此称为是不可重复读。,2019年5月24日,第23页,如果事务2能够看到事务1所提交的数据更新,那么就意味着事务2的两次读操作出现不同的结果,于是就发生了不可重复读的情况,2019年5月24日,第24页,3.幻觉读(Phantom Reads),所谓“幻觉读”是指当事务不是独立执行时发生的一种现象,与不可重复读类似,也是一个事务的更新结果影响到另一个事务的情况,但与不可重复读不同的是它不仅会影响另一个事务所选取的结果集合中的数据值,而且还能够使select语句返回另外一些不同的记录行。,2019年5月24日,第25页,当事务2的sele

10、ct语句返回的结果集合受到事务1的影响而发生变化,这种现象就称之为幻觉读,2019年5月24日,第26页,4.丢失更新(Lost Updates),所谓“丢失更新”是指由于每个事务都不知道其它事务的存在,先前事务所做的数据更新被其它事务所做的更新覆盖,这将导致更新数据的丢失。,2019年5月24日,第27页,5.2.2 隔离性的级别,1. ANSI SQL-92的隔离级别 2. 行版本控制的隔离,2019年5月24日,第28页,1. ANSI SQL-92的隔离级别,2019年5月24日,第29页,2. 行版本控制的隔离,行版本(row versioning)控制的隔离是SQL Server

11、2005一个新的隔离框架。使用行版本控制的隔离可以在大量并发的情况下,显著减少所得产生,并且与NoLock(无锁)相比,它又可以显著降低肮脏读,幻影,丢失更新等现象的发生。,2019年5月24日,第30页,5.2.3锁的空间管理及粒度,1. 行级锁 2. 页级锁 3. 簇级锁 4. 表级锁 5. 数据库级锁,2019年5月24日,第31页,SQL Server空间管理,2019年5月24日,第32页,5.2.4 锁的类别,1.从数据库系统的角度来看 2.从程序员的角度看,2019年5月24日,第33页,1.从数据库系统的角度来看,锁分为以下三种类型: 独占锁 (Exclusive Lock)

12、共享锁(Shared Lock) 更新锁 (Update Lock),2019年5月24日,第34页,2.从程序员的角度看,锁分又为以下两种类型: 乐观锁 (Optimistic Lock) 悲观锁 (Pessimistic Lock),2019年5月24日,第35页,5.2.5 如何在SQL Sever中查看数据库中的锁,1.用Management Studio 查看锁 2.用系统存储过程 sp_lock 查看锁,2019年5月24日,第36页,1.用Management Studio 查看锁,选择目录树窗口中“管理(Management)”文件夹下的“活动监视器(Activity Moni

13、tor)”,可以有两种方式来查看当前锁定的进程按进程ID(process ID)查看锁或者按对象(object)查看锁,如图所示。,2019年5月24日,第37页,2019年5月24日,第38页,2019年5月24日,第39页,2.用系统存储过程 sp_lock 查看锁,用系统存储过程 sp_lock 也可以列出当前的锁,其语法如下: sp_lock spid spid 是 System Process ID(系统进程编号)的缩写。,2019年5月24日,第40页,2019年5月24日,第41页,5.2.6应用程序的锁设计,SQL Server的锁机制非常的完善,除了可对数据进行加锁外,还可以对进程和资源进行加锁。 如果不对所以单据号这个共享资源进行锁定,就有可能出现与时间有关的错误运行结果不唯一。 如下例:,2019年5月24日,第42页,2019年5月24日,第43页,2019年5月24日,第44页,2019年5月24日,第45页,5.2.7 死锁及其防止,死锁是在多用户或多进程状况下,为使用同一资源而产生的无法解决的争用状态。,2019年5月24日,第46页,死锁示意图,2019年5月24日,第47页,本章讲解完毕,Thank for your coming!,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号