版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库系统原理与应用教程(第二版)第13章 事务和并发控制第1页 第第13章章 事务和并发控制事务和并发控制 本章概述 本章的学习目标 主要内容 数据库系统原理与应用教程(第二版)第13章 事务和并发控制第2页 本章概述本章概述 l无论用户对数据库中的数据如何操作,数据库中的数据都无论用户对数据库中的数据如何操作,数据库中的数据都 应该保证一致的、稳定的状态。例如,当我们使用一条语应该保证一致的、稳定的状态。例如,当我们使用一条语 句修改关系句修改关系Book中的所有图书的价格数据时,我们希望中的所有图书的价格数据时,我们希望 这种修改要么全部完成,要么全部都不做,而不能出现一这种修改要么全部
2、完成,要么全部都不做,而不能出现一 部分图书的价格修改了,而另外一部分图书的价格没有修部分图书的价格修改了,而另外一部分图书的价格没有修 改。一个数据库中的数据,经常会有许多用户同时操纵同改。一个数据库中的数据,经常会有许多用户同时操纵同 一个数据,但是数据库管理系统要保证这些用户的操作互一个数据,但是数据库管理系统要保证这些用户的操作互 相不影响,并且都能得到正确的结果。要实现这些要求,相不影响,并且都能得到正确的结果。要实现这些要求, 就得依靠事务和并发控制技术。就得依靠事务和并发控制技术。 l本章将首先介绍事务和并发控制技术的基本概念,然后以本章将首先介绍事务和并发控制技术的基本概念,然
3、后以 Microsoft SQL Server系统为例,研究事务和并发控制技系统为例,研究事务和并发控制技 术在数据库产品中的具体实现。术在数据库产品中的具体实现。 数据库系统原理与应用教程(第二版)第13章 事务和并发控制第3页 本章的学习目标本章的学习目标 l理解和掌握事务的概念、特性和基本状态;理解和掌握事务的概念、特性和基本状态; l理解和掌握事务的基本实现原理;理解和掌握事务的基本实现原理; l理解并发操作存在的问题;理解并发操作存在的问题; l理解和掌握锁的类型和作用;理解和掌握锁的类型和作用; l了解了解Microsoft SQL Server系统中事务和系统中事务和 并发控制的
4、应用。并发控制的应用。 数据库系统原理与应用教程(第二版)第13章 事务和并发控制第4页 主要内容主要内容 13.1 事务事务 13.2 并发控制并发控制 13.3 Microsoft SQL Server系统的事务和锁系统的事务和锁 13.4 本章小结本章小结 数据库系统原理与应用教程(第二版)第13章 事务和并发控制第5页 13.1 事务事务 l下面,我们主要介绍事务的基本概念、特下面,我们主要介绍事务的基本概念、特 性、状态变迁图、事务的并发执行以及事性、状态变迁图、事务的并发执行以及事 务的一致性级别等内容。务的一致性级别等内容。 数据库系统原理与应用教程(第二版)第13章 事务和并发
5、控制第6页 事务的基本概念事务的基本概念 l无论是从系统设计人员的角度,还是从用户的角度,事务都是一个单无论是从系统设计人员的角度,还是从用户的角度,事务都是一个单 元的操作,这些操作要么全部成功,要么全部失败。事务是数据库环元的操作,这些操作要么全部成功,要么全部失败。事务是数据库环 境中的逻辑工作单元,相当于操作系统中的进程的概念。境中的逻辑工作单元,相当于操作系统中的进程的概念。 l事务可以是隐含的,也可以是定义的。在许多数据库的操作中,一个事务可以是隐含的,也可以是定义的。在许多数据库的操作中,一个 命令的执行,例如命令的执行,例如UPDATE语句就是一个完整的事务。在应用程序中,语句
6、就是一个完整的事务。在应用程序中, 事务也可以由用户使用语句定义,例如事务也可以由用户使用语句定义,例如BEGIN TRANSACTION语句语句 表示事务的开始,而表示事务的开始,而END TRANSACTION语句表示事务的结束。语句表示事务的结束。 l为了保证数据库中的数据总是正确的,一个事务应该具有为了保证数据库中的数据总是正确的,一个事务应该具有ACID属性,属性, A表示原子性表示原子性(Atomicity),C表示一致性表示一致性(Consistency),I表示独立表示独立 性性(Isolation),D表示持久性表示持久性(Durability)。事务的。事务的ACID特性和
7、事务的特性和事务的 关系可以使用图关系可以使用图13-1来示意表示。来示意表示。 数据库系统原理与应用教程(第二版)第13章 事务和并发控制第7页 事务的状态变迁图事务的状态变迁图 数据库系统原理与应用教程(第二版)第13章 事务和并发控制第8页 事务的并发执行事务的并发执行 l事务中的语句可以分成两类,一类是事务中的语句可以分成两类,一类是I/O活动,执活动,执 行的时间是毫秒级,另一类是行的时间是毫秒级,另一类是CPU的活动,其执的活动,其执 行时间是微妙级。在计算机系统中,这两类活动行时间是微妙级。在计算机系统中,这两类活动 的速度不一样,因此对磁盘的操作和的速度不一样,因此对磁盘的操作
8、和CPU的操作的操作 可以并发执行。可以并发执行。 l如果多个事务按照顺序执行,那么效率比较低。如果多个事务按照顺序执行,那么效率比较低。 但是,如果多个事务并发执行,就可以提高总的但是,如果多个事务并发执行,就可以提高总的 效率。事务的执行次序称为调度。如果多个事务效率。事务的执行次序称为调度。如果多个事务 依次执行,则称该事务为串行调度。如果利用分依次执行,则称该事务为串行调度。如果利用分 时的方法同时处理多个事务,则称该事务为并发时的方法同时处理多个事务,则称该事务为并发 调度。调度。 数据库系统原理与应用教程(第二版)第13章 事务和并发控制第9页 事务的一致性级别事务的一致性级别 l
9、在在SQL语句中,提供了事务一致性的四个等级供用户选择。这四个一语句中,提供了事务一致性的四个等级供用户选择。这四个一 致性等级从高到低依次是可串行化致性等级从高到低依次是可串行化(serializable)、可重复读、可重复读 (repeatable)、读提交数据、读提交数据(read committed)和可以读未提交数据和可以读未提交数据 (read uncommitted)。 l可串行化级别允许事务与其他事务并发执行,但是系统必须保证调度可串行化级别允许事务与其他事务并发执行,但是系统必须保证调度 是可串行化的,不会发生错误。这是最高级别的一致性,也是系统默是可串行化的,不会发生错误。
10、这是最高级别的一致性,也是系统默 认的一致性级别。认的一致性级别。 l可重复读就是只允许事务读已提交的数据,且在两次读同一数据时不可重复读就是只允许事务读已提交的数据,且在两次读同一数据时不 允许其他事务修改此数据,但是允许该事务与其他事务的并发调度不允许其他事务修改此数据,但是允许该事务与其他事务的并发调度不 是可串行化的。是可串行化的。 l读提交数据就是允许事务读已经提交的数据,但未必要求可重复读。读提交数据就是允许事务读已经提交的数据,但未必要求可重复读。 也就是说,它允许一个事务的两次请求可能得到不同的结果,只要这也就是说,它允许一个事务的两次请求可能得到不同的结果,只要这 些数据是已
11、经提交的即可。些数据是已经提交的即可。 l可以读未提交数据就是允许事务读已提交或未提交的数据,这是一致可以读未提交数据就是允许事务读已提交或未提交的数据,这是一致 性等级最低的事务。性等级最低的事务。 数据库系统原理与应用教程(第二版)第13章 事务和并发控制第10页 主要内容主要内容 13.1 事务事务 13.2 并发控制并发控制 13.3 Microsoft SQL Server系统的事务和锁系统的事务和锁 13.4 本章小结本章小结 数据库系统原理与应用教程(第二版)第13章 事务和并发控制第11页 13.2 并发控制并发控制 l前面讲过,事务可以并发执行。由于并发前面讲过,事务可以并发
12、执行。由于并发 事务之间的相互干扰,有可能破坏事务的事务之间的相互干扰,有可能破坏事务的 独立性,于是会造成丢失修改等问题。独立性,于是会造成丢失修改等问题。 l本节将要介绍并发操作可能带来的问题以本节将要介绍并发操作可能带来的问题以 及如何使用锁来解决这些问题。及如何使用锁来解决这些问题。 数据库系统原理与应用教程(第二版)第13章 事务和并发控制第12页 并发操作带来的问题并发操作带来的问题 l并发操作带来的问题是丢失修改、脏读、不可重复读和幻觉读。并发操作带来的问题是丢失修改、脏读、不可重复读和幻觉读。 l丢失修改就是指当一个事务修改了数据,并且这种修改还没有提交到丢失修改就是指当一个事
13、务修改了数据,并且这种修改还没有提交到 数据库中时,另外一个事务又对同样的数据进行了修改,并且把这种数据库中时,另外一个事务又对同样的数据进行了修改,并且把这种 修改提交到了数据库中。修改提交到了数据库中。 l脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这 种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据, 然后使用了这个数据。然后使用了这个数据。 l不可重复读是指在一个事务内,多次读同一数据。在这个事务还没有不可重复读是指在一个事务内,多次读同一
14、数据。在这个事务还没有 结束时,另外一个事务也访问该同一数据,那么,在第一个事务中的结束时,另外一个事务也访问该同一数据,那么,在第一个事务中的 两次读数据之间,由于第二个事务的修改,第一个事务两次读到的的两次读数据之间,由于第二个事务的修改,第一个事务两次读到的的 数据可能是不一样的。数据可能是不一样的。 l幻觉读是指当事务不是独立执行时发生的一种现象,例如,第一个事幻觉读是指当事务不是独立执行时发生的一种现象,例如,第一个事 务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。 同时,第二个事务也修改这个表中的数据,这
15、种修改是向表中插入一同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一 行新数据。行新数据。 数据库系统原理与应用教程(第二版)第13章 事务和并发控制第13页 锁锁 l为了解决这些并发问题,确保可串行化的方法就是保证事为了解决这些并发问题,确保可串行化的方法就是保证事 务对数据项的访问以互斥的方式进行,即当一个事务访问务对数据项的访问以互斥的方式进行,即当一个事务访问 某个数据项时,其他任何事务都不能修改该数据项。实现某个数据项时,其他任何事务都不能修改该数据项。实现 这种要求的最常用的方法就是只允许事务访问该事务当前这种要求的最常用的方法就是只允许事务访问该事务当前 锁住的数据项
16、。锁住的数据项。 l对数据项加锁的最常见的形式是共享锁和排它锁。如果事对数据项加锁的最常见的形式是共享锁和排它锁。如果事 务务Ti获得了数据项获得了数据项D上的共享锁上的共享锁(Shared,S),则该事务,则该事务 可读数据项可读数据项D但是不能写但是不能写D。如果事务。如果事务Ti获得了数据项获得了数据项D上上 的排它锁的排它锁(eXclusived,X),则该事务既可读数据项,则该事务既可读数据项D又又 可写数据项可写数据项D。每一个事务都需要根据自己将对数据项。每一个事务都需要根据自己将对数据项D 进行的操作类型申请适当的锁。进行的操作类型申请适当的锁。 数据库系统原理与应用教程(第二
17、版)第13章 事务和并发控制第14页 死锁死锁 l假设有两个事务假设有两个事务T1和和T2都对数据项都对数据项U和和V执行操作。如果执行操作。如果 事务事务T1在数据项在数据项U上拥有排它锁,而事务上拥有排它锁,而事务T2正在申请数据正在申请数据 项项U上的共享锁,那么事务上的共享锁,那么事务T2必须等待事务必须等待事务T1释放数据项释放数据项 U上的排它锁。同样,如果事务上的排它锁。同样,如果事务T2在数据项在数据项V上拥有排它上拥有排它 锁,而事务锁,而事务T1正在申请数据项正在申请数据项V上的共享锁,那么事务上的共享锁,那么事务T1 必须等待事务必须等待事务T2释放数据项释放数据项V上的
18、排它锁。由于这两个事上的排它锁。由于这两个事 务在互相等待,哪一个事务都不能继续执行下去,这种状务在互相等待,哪一个事务都不能继续执行下去,这种状 态称为死锁状态。态称为死锁状态。 l当死锁状态发生时,系统必须回滚其中的一个事务。只有当死锁状态发生时,系统必须回滚其中的一个事务。只有 当某一个事务被回滚了,该事务锁住的数据项才能被解除,当某一个事务被回滚了,该事务锁住的数据项才能被解除, 其他事务才可以访问这些数据,才可以继续执行其他操作。其他事务才可以访问这些数据,才可以继续执行其他操作。 数据库系统原理与应用教程(第二版)第13章 事务和并发控制第15页 主要内容主要内容 13.1 事务事
19、务 13.2 并发控制并发控制 13.3 Microsoft SQL Server系统的事务和锁系统的事务和锁 13.4 本章小结本章小结 数据库系统原理与应用教程(第二版)第13章 事务和并发控制第16页 13.3 Microsoft SQL Server系统的系统的 事务和锁事务和锁 lMicrosoft SQL Server系统通过使用事务和锁机系统通过使用事务和锁机 制,提供了数据库中并发操作的解决方案。通过制,提供了数据库中并发操作的解决方案。通过 使用事务和锁,系统可以防止其他用户修改另外使用事务和锁,系统可以防止其他用户修改另外 一个还没有完成的事务中的数据,保证数据修改一个还没
20、有完成的事务中的数据,保证数据修改 的完整性和可恢复性。的完整性和可恢复性。 l在在Microsoft SQL Server系统中,提供了多种类系统中,提供了多种类 型的锁,这些锁可以锁定的资源包括行、页、簇、型的锁,这些锁可以锁定的资源包括行、页、簇、 表和数据库等,允许不同的事务使用不同类型的表和数据库等,允许不同的事务使用不同类型的 锁来锁定不同的资源。锁来锁定不同的资源。 l下面详细介绍下面详细介绍Microsoft SQL Server系统的事务系统的事务 和锁机制。和锁机制。 数据库系统原理与应用教程(第二版)第13章 事务和并发控制第17页 事务的类型事务的类型 l在在Micro
21、soft SQL Server系统中,可以把事务分系统中,可以把事务分 成两种类型。一种是系统提供的事务,另一种是成两种类型。一种是系统提供的事务,另一种是 用户定义的事务。用户定义的事务。 l系统提供的事务是指在执行某些系统提供的事务是指在执行某些Transact-SQL语语 句时,一条语句就是一个事务。句时,一条语句就是一个事务。 l另外一种事务,是用户明确定义的事务。在实际另外一种事务,是用户明确定义的事务。在实际 应用中,大多数的事务处理就是采用了用户定义应用中,大多数的事务处理就是采用了用户定义 的事务来处理。在开发应用程序时,可以使用的事务来处理。在开发应用程序时,可以使用 BEG
22、IN TRANSACTION语句来定义明确的用户语句来定义明确的用户 定义的事务。定义的事务。 数据库系统原理与应用教程(第二版)第13章 事务和并发控制第18页 事务的工作原理事务的工作原理 数据库系统原理与应用教程(第二版)第13章 事务和并发控制第19页 锁的粒度锁的粒度 l为了优化系统的并发性,应该根据事务的大小和为了优化系统的并发性,应该根据事务的大小和 系统活动的程度,锁定不同的资源。也就是说,系统活动的程度,锁定不同的资源。也就是说, 既可以锁定比较大的资源,也可以锁定比较小的既可以锁定比较大的资源,也可以锁定比较小的 资源。资源。 l在在Microsoft SQL Server系统中,已经比较完善系统中,已经比较完善 地实现了这些要求。地实现了这些要求。 l在该系统中,可以锁定的资源有多种,这些可以在该系统中,可以锁定的资源有多种,这些可以 锁定的资源分别是行、页、簇、表和数据库,他锁定的资源分别是行、页、簇、表和数据库,他 们对应的锁分别是行级锁、页级锁、簇级锁、表们对应的锁分别是行级锁、页级锁、簇级锁、表 级锁和数据库级锁。级锁和数据库级锁。 数据库系统原理与应用教程(第二版)第13章 事务和并发控制第20页 锁的类型锁的类型 l在在Microsoft SQL Server系统中,锁定资源的方系统中,锁定资源的方 式有两种基本形式:式有两种基本形式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 怀化市政府采购制度
- 2026湖南长沙电力职业技术学院非事业编制学历教育教师及辅导员岗位校园招聘18人备考题库及答案详解(夺冠系列)
- 2026上海音乐学院虹口区北虹高级中学招聘教师备考题库附答案详解(巩固)
- 2026年3月北京大学深圳医院选聘1人备考题库(广东)及答案详解(新)
- 2026海南省数农产权运营管理有限公司招聘备考题库有完整答案详解
- 2026湖北恩施州消防救援局政府专职消防员招聘38人备考题库附答案详解(a卷)
- 2026内蒙古鄂尔多斯市乌兰牧骑招聘舞蹈演员14人备考题库附答案详解(研优卷)
- 2026山东济宁学院招聘69人备考题库(博士-长期招聘)含答案详解(巩固)
- 2026浙江省文化产业投资集团有限公司招聘23人备考题库及答案详解(网校专用)
- 2026福建莆田市湄洲湾北岸经济开发区国发投资有限公司后备干部招聘2人备考题库及答案详解(名校卷)
- 2026年广东电网春季校园招聘考试参考题库及答案解析
- 《做个诚实的好孩子》课件
- 2022年内蒙古呼和浩特白塔国际机场有限责任公司招聘笔试试题及答案解析
- 《纳米材料基础与应用》全书配套教学课件
- 桃树栽培与施肥技术-田波课件
- 水利工程管理单位定岗标准(试点)
- 部编人教版高中语文选择性必修下册第一单元检测卷
- 第四讲 戊戌维新运动
- 企业安全生产标准化-目录
- 第二章旅行社产品设计与开发
- 高鸿业《西方经济学(微观部分)》(第6版)课后习题答案详解(完整版)
评论
0/150
提交评论