数据库基础与实例教程(达梦DM8) 课件 5.2并发控制_第1页
数据库基础与实例教程(达梦DM8) 课件 5.2并发控制_第2页
数据库基础与实例教程(达梦DM8) 课件 5.2并发控制_第3页
数据库基础与实例教程(达梦DM8) 课件 5.2并发控制_第4页
数据库基础与实例教程(达梦DM8) 课件 5.2并发控制_第5页
已阅读5页,还剩19页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

数据库基础(基于达梦DM8)数据库事务及锁管理55.2并发控制02事务隔离级01事务锁定事务锁定5.2.15.2.1事务锁定

数据库一般都支持多用户并发访问、修改数据,有可能出现多个事务同时访问、修改相同数据的情况。若对并发操作不加控制,就可能会访问到不正确的数据,破坏数据的一致性和正确性。

5.2.1事务锁定

封锁机制是实现数据库并发控制的一个非常重要的技术。

当事务在对某个数据库对象进行操作前,需要先对其封锁。封锁后事务就对该数据库对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据库对象进行相应操作。5.2.1事务锁定1.锁模式

(1)共享锁

共享锁(ShareLock,简称“S锁”)用于读操作,防止其他事务修改正在访问的对象。这种封锁模式允许多个事务同时并发读取相同的资源,但是不允许任何事务修改这个资源,避免了读操作未完成,数据已改变的情况发生。5.2.1事务锁定1.锁模式

(2)排他锁

排他锁(ExclusiveLock,简称“X锁”)用于写操作,其以独占的方式访问对象,不允许任何其他事务访问被封锁对象。排他锁防止多个事务同时修改相同的数据,避免修改的数据覆盖引发数据错误;它还能防止访问一个正在被修改的对象,避免在修改完成前读数据,引发数据不一致。一般在修改对象定义时使用。5.2.1事务锁定1.锁模式

(3)意向锁

意向锁(IntentLock)用于读取或修改被访问对象数据时使用,多个事务可以同时对相同对象上意向锁。

一般意向锁是数据库根据需要自动添加的。DM支持两种意向锁。

意向共享锁(IntentShareLock,简称“IS锁”):一般在只读访问对象时使用;

意向排他锁(IntentExclusiveLock,简称“IX锁”):一般在修改对象数据时使用。5.2.1事务锁定2.锁粒度

数据库是命名的数据项的集合。由并发控制程序选择的作为保护单位的数据项的大小被称为粒度。

粒度可以是数据库中行的一个字段,也可以是更大的单位,如行、表或者是一个磁盘块。大多数商业数据库管理系统都提供了不同的加锁粒度,主要有:数据库级、表级、页级、行(元组)级、属性(字段)级。5.2.1事务锁定3.锁的分类

在DM数据库中按照封锁对象的不同,锁可以分为TID锁和对象锁。

(1)TID锁

DM实现的是行级多版本,每一行记录隐含一个TID字段,用于事务可见性判断。TID锁以事务号为封锁对象,为每个活动事务生成一把TID锁,代替了其他数据库行锁的功能,防止多个事务同时修改同一行记录。5.2.1事务锁定3.锁的分类

(2)对象锁

对象锁是DM新引入的一种锁,通过统一的对象ID进行封锁,将对数据字典的封锁和表锁合并为对象锁,以达到减少封锁冲突、提升系统并发性能的目的。5.2.1事务锁定3.锁的分类

(2)对象锁

为了实现与数据字典锁和表锁相同的封锁效果,从逻辑上将对象锁的封锁动作分为四类:

独占访问(EXCLUSIVEACCESS),不允许其他事务修改对象,不允许其他事务访问对象,使用X方式封锁

独占修改(EXCLUSIVEMODIFY),不允许其他事务修改对象,允许其他事务共享访问对象,使用S+IX方式封锁

5.2.1事务锁定3.锁的分类

(2)对象锁

为了实现与数据字典锁和表锁相同的封锁效果,从逻辑上将对象锁的封锁动作分为四类:

共享修改(SHAREMODIFY),允许其他事务共享修改对象,允许其他事务共享访问对象,使用IX方式封锁

共享访问(SHAREACCESS),允许其他事务共享修改对象,允许其他事务共享访问对象,使用IS方式封锁事务隔离级5.2.25.2.2事务隔离级

在关系型数据库中,事务的隔离性分为四个隔离级别,读提交隔离级、串行化隔离级、读未提交隔离级和可重复读隔离级5.2.2事务隔离级1.读数据的概念(1)脏读(DirtyRead)所谓脏读就是对脏数据的读取。而脏数据所指的就是未提交的已修改数据。如果一个事务在提交操作结果之前,另一个事务可以看到该结果,就会发生脏读。5.2.2事务隔离级1.读数据的概念(2)不可重复读(Non-RepeatableRead)一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。如果一个事务在读取了一条记录后,另一个事务修改了这条记录并且提交了事务,再次读取记录时如果获取到的是修改后的数据,这就发生了不可重复读情况。5.2.2事务隔离级1.读数据的概念(3)幻象读(PhantomRead)一个事务按相同的查询条件重新读取以前检索过的数据,却发现其他事务插入了满足其查询条件的新数据,或者删除了部分数据。这样的数据对于这个事务来说就是“幽灵”数据或者“幻象”数据,这种现象就称为幻象读。5.2.2事务隔离级2.隔离级别隔离级别有四种,分别是:读未提交、读提交、可重复读和串行化。DM数据库支持三种事务隔离级别:读未提交、读提交和串行化。其中,读提交是DM数据库默认使用的事务隔离级别。可重复读升级为更严格的串行化隔离级。5.2.2事务隔离级2.隔离级别(1)读提交隔离级DM数据库的读提交隔离可以确保只访问到已提交事务修改的数据,保证数据处于一致性状态,能够满足大多数应用的要求,并最大限度地保证系统并发性能,但可能会出现不可重复读取和幻象读。5.2.2事务隔离级2.隔离级别(2)串行化隔离级在要求消除不可重复读取或幻象读的情况下,可以设置事务隔离级为串行化。跟读提交隔离级相比,串行化事务的查询本身不会增加任何代价,但修改数据可能引发“串

温馨提示

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

最新文档

评论

0/150

提交评论