基于封锁的事务并发控制概述
数据库事务的并发控制机制

数据库事务的并发控制机制随着数据量增长和多用户同时对数据库进行读写操作的需求增加,数据库的并发控制机制变得尤为重要。
并发控制机制旨在确保数据库事务在并发环境下能够正确地执行并保持数据的一致性。
在数据库事务中,事务是一个逻辑处理单元,可以由一个或多个数据库操作组成。
并发是指多个事务可以同时执行,但可能会导致问题,例如脏读、不可重复读和幻读。
为了解决这些并发问题,数据库引入了并发控制机制。
数据库事务的并发控制机制主要包括以下几个方面:1. 锁机制:锁是最常用的并发控制技术,它可以通过确保事务读取和修改数据时的独占访问来保证数据的一致性。
常见的锁包括共享锁和排它锁。
共享锁允许多个事务同时读取同一数据,而排它锁则只允许一个事务修改数据。
通过合理的锁定策略,可以有效地避免脏读、不可重复读和幻读等问题。
2. 事务隔离级别:事务隔离级别定义了事务之间的可见性和影响范围,通过设置不同的隔离级别,可以控制事务之间的并发访问。
常见的隔离级别有读未提交、读已提交、可重复读和串行化。
不同的隔离级别对应着不同的并发控制机制,从而可以满足不同场景下的并发需求。
3. 封锁粒度:封锁粒度指的是锁定数据的单位。
合理选择封锁粒度可以提高并发性能。
如果封锁粒度过大,锁的持有时间将增加,导致并发性能下降。
反之,如果封锁粒度过小,锁冲突的概率会增加。
常见的封锁粒度有表级锁和行级锁,具体选择哪种封锁粒度取决于实际需求。
4. 多版本并发控制(MVCC):多版本并发控制是一种基于读-写冲突的并发控制策略。
它通过为每个事务创建一个可见版本来避免锁竞争,从而提高并发性能。
在多版本并发控制下,读操作可以同时进行,并不会被其他事务的写操作阻塞。
常见的实现方式有基于时间戳的多版本并发控制和基于快照的多版本并发控制。
5. 死锁检测和解决:死锁是在并发环境下经常出现的问题,指的是两个或多个事务相互等待对方释放资源而无法继续执行的情况。
为了解决死锁问题,数据库通常会采用死锁检测和解决机制,例如等待图和超时机制。
数据库事务管理中的并发控制技术

数据库事务管理中的并发控制技术数据库作为一个关键的数据存储和管理系统,需要支持多个用户同时对数据进行操作。
然而,并发操作可能导致各种数据不一致性的问题,因此数据库管理系统需要使用并发控制技术来保证数据的一致性和可靠性。
本文将介绍数据库事务管理中的并发控制技术。
一、并发控制的概念和背景并发操作是指多个用户同时访问数据库并执行相应的操作。
在并发操作中,可能会出现各种问题,例如丢失更新、不可重复读和幻读等。
为了解决这些问题,数据库管理系统采用了并发控制技术,通过合理地管理并发操作,保证数据的一致性和可靠性。
并发控制的目标是保证事务的隔离性和一致性。
事务的隔离性要求每个事务在执行期间看不到其他事务对数据库所做的改变,事务之间应该相互独立。
事务的一致性要求事务的执行不破坏数据库的完整性和约束。
二、锁定机制锁定机制是一种广泛使用的并发控制技术,它通过为数据库中的数据对象设置锁定状态来控制并发访问。
锁定机制通常分为两种类型:共享锁和排他锁。
共享锁允许多个事务同时读取一个数据对象,而排他锁只允许一个事务对数据对象进行读取或修改。
当一个事务开始时,它可以请求获取共享锁或排它锁。
如果事务需要读取数据对象,则可以请求获取共享锁;如果事务需要修改数据对象,则必须请求获取排它锁。
如果一个事务请求的锁与当前已有的锁没有冲突,那么它将立即获取到锁;如果有冲突,则事务必须等待,直到其他事务释放锁。
锁定机制可以保证并发事务的隔离性和一致性,但它也可能导致问题,如死锁和锁竞争。
死锁是指多个事务互相等待彼此持有的资源,导致所有事务都无法继续执行。
锁竞争是指多个事务争夺同一个资源,导致性能下降和系统响应时间变慢。
为了避免死锁和锁竞争,数据库管理系统通常使用锁定维护和死锁检测机制。
锁定维护机制用于跟踪已经被请求或分配的锁的状态,以避免死锁的发生。
死锁检测机制用于周期性地检查系统中是否出现死锁,如果发现死锁,系统会自动中断其中一个或多个事务,以解除死锁。
数据库事务管理中的锁与并发控制技巧分享

数据库事务管理中的锁与并发控制技巧分享数据库事务管理是关系型数据库系统中非常重要的一环,它确保了数据的一致性、隔离性和持久性。
在多用户并发访问数据库时,正确的锁与并发控制技巧能够有效地提高数据库的吞吐量,降低资源竞争,并且保证数据的正确性。
本文将分享一些数据库事务管理中锁与并发控制的技巧与策略。
1. 事务与数据锁在数据库中,事务是一组逻辑上相关的数据库操作,它们被当作一个整体来处理。
事务具有四个特性:原子性、一致性、隔离性和持久性。
为了实现这些特性,数据库通过锁机制对数据进行保护。
数据锁是数据库管理系统中的一种机制,用于控制事务或查询对数据的访问,以确保数据的完整性和一致性。
在数据库事务管理中,锁的类型主要有共享锁和排他锁。
共享锁(Shared Lock)也称为读锁,指示多个事务可以同时读取共享资源,但是不能并发地修改资源。
当一个事务持有共享锁时,其他事务可以继续持有共享锁,但不能获取排他锁。
共享锁用于保证数据的一致性和隔离性。
排他锁(Exclusive Lock)也称为写锁,指示一个事务独占资源并且不与其他事务并发访问。
当一个事务持有排他锁时,其他事务无法同时持有共享锁或排他锁。
排他锁用于确保数据的一致性和隔离性。
2. 并发控制技巧在数据库事务管理中,锁与并发控制技巧是保证数据一致性和隔离性的关键。
以下是一些常用的技巧:a) 读写锁(Read-Write Lock)读写锁是一种特殊的锁机制,它可以同时支持多个读操作,但只能支持一个写操作。
读写锁可以有效提高并发读取性能,因为多个事务可以同时读取共享资源,并且不会相互干扰。
只有在进行写操作时,事务需要获取独占的写锁。
读写锁在数据库事务管理中应用广泛,特别是在读多写少的场景下,可以大幅提高系统的并发性能。
b) 乐观并发控制(Optimistic Concurrency Control)乐观并发控制是一种用于管理事务并发的策略,采用的是乐观的假设,即并发访问的事务之间很少会有冲突。
基于封锁的事务并发控制概述

其他事务不可见 ;持续性指 :一旦事 务成功提交 ,其对数据库 中数
据 的改变是永久的。事务是并发控制的基 本单位 ,保证 事务的 A I CD 特 性是事务处理的重要任务。然而,事务的并发执行可能会破坏事
三 、基于封锁的事务并 发控制机制
( )锁的类 型 一 封锁是实现并发控制 的一个非 常重要 的技术 。所谓封锁就是事
二、事务 的特性和并发的数据不一致性 事 务 具 有 A I 特 性 : 原 子 性 ( tm c t ) 一 致 性 CD A oiiy , ( o ss e c ) C n it n y ,隔离性 ( s lt o )和持续性 (u a i iy 。 Io a in D r b lt )
DM B S中的并发控制机制 。
( ) r t -R a 三 W i e ed冲突 ,也称读脏数据 。读脏数据指事务 T 1 修改某数据 ,事务 T读取 同一数据后,T 由于某种原因被撤销 ,这 。 。 时 T 已修改过的数据恢复原值, 读 到的数据就与数据 中的数据不
~
致 ,则称 T读到的数据 就为脏数据 。
Ke wo d : tb s a a e n y tmsT a scin; n u rn yc nr lL k y r sDaa a em n g me t se ;r a t Co c re c o to ;oc s n o
一
、
引言
按相 同条件读取数据时,发现多了一些记录。后两种情 况也称幻影 现象 。
事务是用户定义 的一组数据库操 作序列 。 事务 的执行结果将使 数据库从一个一致性状态转变到另一个一致性状态 。 为了提 高吞吐 量, 系统 中常常是多个 事务并发执行 。 这会产生多个事务同时存取 同一数据的情况 ,从而破坏数据库 的一致性。所 以数据库管理系统 ( a a a eM n g m n y tm B S D t b s a a e e t S s e ,D M )必须提供并发控制机制 , 使得并发的事务在冲突的时候被串行化执行 。 这种调度称为可串行 化调度 。其中基于封锁 的并发控制机制 是一种被广泛应 用于商业
数据库事务管理的并发控制与故障恢复策略

数据库事务管理的并发控制与故障恢复策略引言数据库事务是数据库管理系统中的关键概念。
它确保了数据库的数据一致性和完整性,并提供了高并发操作的方式。
在数据库中,支持并发操作是很重要的,但同时也引入了并发冲突和故障恢复的问题。
本文将讨论数据库事务管理中的并发控制与故障恢复策略。
一、并发控制并发控制是指在多个事务同时访问数据库时,保证事务之间的数据操作不会发生冲突,从而实现一致性和隔离性。
以下是一些常见的并发控制技术:1. 锁机制锁是最常用的并发控制技术之一。
在事务中,当一个数据项被一个事务锁定时,其他事务就无法访问该数据项,直到锁被释放。
这样可以避免数据的并发写操作引起的冲突。
但是锁的使用需要谨慎,如果锁的粒度过大或者过小都可能导致锁竞争问题。
因此,选择合适的锁粒度对提高并发性能非常重要。
2. 并发控制方法并发控制方法分为两类:乐观并发控制和悲观并发控制。
乐观并发控制假设事务之间的冲突很少发生,只在提交时检查是否发生了冲突;而悲观并发控制则假设冲突会频繁发生,因此在事务执行期间一直持有锁。
常见的乐观并发控制方法包括多版本并发控制(MVCC)和时间戳机制。
悲观并发控制方法包括共享锁和排他锁等。
3. 事务隔离级别事务隔离级别定义了事务之间的隔离程度,包括读未提交、读已提交、可重复读和可串行化。
不同的隔离级别提供了不同程度的并发性和数据一致性保证。
选择合适的隔离级别是一个权衡问题。
二、故障恢复策略故障恢复策略是处理数据库异常情况的方法,包括硬件故障和软件故障。
数据库的故障恢复策略主要包括以下内容:1. 日志系统日志系统用于记录数据库操作的序列,包括数据修改操作和事务提交信息。
通过将这些操作记录到日志中,可以在系统故障后恢复数据。
常见的日志系统包括逻辑日志和物理日志,其中物理日志比较常用。
2. 检查点检查点是在系统正常运行时定期将内存中的数据和日志信息持久化到磁盘上的一个时间点。
通过检查点,可以减少故障恢复所需的时间。
数据库事务处理中的并发控制技术

数据库事务处理中的并发控制技术在数据库系统中,事务是一组需要作为一个原子单元进行执行的操作,要么全部执行成功,要么全部失败回滚。
并发控制是保证多个事务并发执行时,数据的一致性和完整性的技术。
在多用户环境下,数据库并发操作是一项关键技术,因此数据库事务处理中的并发控制技术至关重要。
一、并发控制概述当多个事务同时访问数据库并对数据库进行读写操作时,可能会出现各种问题,如丢失更新、脏读、不可重复读、幻影读等。
为了解决这些问题,需要采取适当的并发控制机制。
并发控制的目标是提高系统的性能、保证数据的一致性、避免冲突和死锁等问题的发生。
二、锁定技术锁定技术是最常见也是最基本的并发控制技术,通过锁定数据项或资源,限制并发事务的访问和操作。
在事务执行期间,所涉及的数据项被加上锁并且在事务结束时才释放锁,从而确保每个事务的操作是原子性的。
常见的锁定技术包括:1. 共享锁(Shared Lock):多个事务可以同时获取相同的共享锁,用于读操作。
共享锁之间不互斥,可以并发访问。
2. 排他锁(Exclusive Lock):排他锁会阻塞其他事务对于资源的访问,只允许一个事务独占该资源,用于写操作。
3. 间隙锁(Gap Lock):间隙锁用于锁住一个范围内的间隔,阻止其他事务插入该范围的记录。
防止幻影读问题的发生。
锁定技术的优点是简单易懂,但是并发性能较差,并且容易导致死锁等问题的发生。
三、多版本并发控制(MVCC)多版本并发控制(MVCC)是一种相对于传统锁定技术的的并发控制技术。
它允许不同的事务同时读取和操作数据库的不同版本,从而避免了锁的竞争和冲突。
在MVCC中,每个事务在执行时都能看到一个一致性的快照,这个快照代表了它在事务开始时的数据库状态。
当事务开始时,数据库将为每个事务生成一个唯一的时间戳,并与数据库的每个数据项关联。
当有一个事务想要读取或写入一个数据项时,系统将检查该事务的时间戳,以确定是否可以读取或修改数据项。
数据库事务管理与并发控制

数据库事务管理与并发控制数据库事务管理与并发控制是数据库系统中非常重要的概念和技术,它们对于确保数据库的一致性、可靠性以及高效性起着至关重要的作用。
本文将详细介绍数据库事务管理和并发控制的概念、原理以及相关技术。
一、数据库事务管理数据库事务是指作为一个逻辑单位执行的一系列数据库操作,它具有以下特性:原子性、一致性、隔离性和持久性,即被称为ACID特性。
原子性指事务中的操作要么全部成功执行,要么全部失败回滚。
一致性指事务执行前后数据库的状态保持一致。
隔离性指多个事务并发执行时,每个事务都感觉不到其他事务的存在。
持久性指一旦事务提交,其结果将永久保存在数据库中。
数据库事务管理的目标是确保数据库在多用户并发访问的情况下保持一致性和可靠性。
为实现这一目标,数据库管理系统提供了事务的提交和回滚机制。
事务提交指将事务中的操作永久保存到数据库中,事务回滚指放弃事务中的操作,将数据库恢复到事务执行前的状态。
数据库事务管理的主要技术包括日志记录、锁机制和并发控制。
日志记录用于记录事务执行的过程,以便在发生故障时恢复数据库状态。
锁机制用于控制并发访问,避免多个事务同时对同一数据进行修改造成的冲突。
并发控制用于解决多个事务并发执行时可能引发的各种问题,如丢失修改、脏读、不可重复读和幻影读。
二、并发控制并发控制是指在多个事务同时执行时,通过一定的机制和策略保证事务的正确执行和数据的一致性。
并发控制的目标是提高数据库系统的并发性和性能,同时避免各种并发访问可能引发的问题。
常用的并发控制技术包括封锁协议、时间戳法和多版本并发控制。
封锁协议是一种基于锁机制的并发控制方法,通过对数据项进行加锁和解锁来确保事务的串行执行。
封锁协议分为两种:共享锁和排他锁,分别用于读和写操作。
时间戳法是一种基于时间戳的并发控制方法,通过为每个事务分配唯一的时间戳来确定其执行顺序,从而避免冲突。
多版本并发控制是一种通过保存数据的不同版本来实现并发控制的方法,读操作可以读取旧版本的数据,写操作则会引入新版本。
事务并发控制课件

数据一致性问题
数据不一致性定义
当多个事务同时对数据库进行修改时,可能导致数据从一致状态 变为不一致状态。
数据不一致性类型
丢失修改、不可重复读、脏读。
数据一致性维护
通过数据库锁、事务隔离级别设置等方式来维护数据一致性。
系统性能问题
01
02
03
系统性能问题定义
由于并发事务过多或处理 不当,导致系统性能下降, 响应时间变长。
需要避免并发事务之间的相互干扰,确保数据的一致性和完整性。
银行转账案例解决方案
使用锁机制
01
对共享资源(账户余额)加锁,确保同一时间只有一个事务对
其进行操作。
使用数据库事务隔离级别
02
设置合适的事务隔离级别,防止并发事务之间的不可预期结果。
回滚机制
03
当一个事务失败时,能够回滚操作,保证数据的一致性。
数据库查询优化
数据库查询优化是提高数据库性能的重要手段之一, 通过优化查询语句和查询逻辑,可以减少数据库的负
载和提高并发处理能力。
数据库查询优化包括选择合适的查询方式、避免使用 低效的查询语句、合理使用分页查询等。
在进行数据库操作时,应该根据业务需求和数据量大 小等因素选择合适的查询方式,并定期对查询语句进
随着大数据技术的普及和应用,越来越多的企业和组织开 始面临如何高效地处理和分析大规模数据的问题,并发控 制技术在此过程中发挥着至关重要的作用。
大数据处理中的并发控制技术将不断发展和完善,未来将 会有更多的优化算法和技术涌现,以提高大数据处理的整 体性能和效率。
云计算环境下的并发控制
云计算环境下的并发控制是云计算技术中的重要研究方向之一, 它涉及到如何有效地管理和控制多个并发执行的计算任务。
数据库事务的并发控制与锁机制

数据库事务的并发控制与锁机制随着数据库在各个领域的广泛应用,数据库系统的性能和并发能力成为了关注的重点之一。
然而,并发操作也带来了一系列的问题,比如数据丢失、读取脏数据等,因此数据库事务的并发控制与锁机制显得尤为重要。
本文将探讨数据库事务的并发控制策略以及常用的锁机制,以期帮助读者更好地理解并发控制的原理和方法。
一、数据库事务数据库事务是指作为一个逻辑工作单元执行的一系列数据库操作。
事务应具备以下四个特性(ACID):原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
为了提高数据库的并发性能,数据库管理系统(DBMS)会允许多个事务同时执行。
然而,多个事务并发执行时可能会产生冲突,如读-写冲突、写-写冲突等。
因此,需要采取相应的并发控制策略,保证事务的一致性和正确性。
二、并发控制策略1. 串行化串行化是一种简单粗暴的并发控制策略,即每次只允许一个事务执行,其他事务等待。
串行化能够避免并发冲突,但会限制并发能力,降低系统的吞吐量。
2. 乐观并发控制(Optimistic Concurrency Control,OCC)乐观并发控制是基于假设冲突不经常发生的策略。
该策略允许多个事务同时执行,但在提交时验证是否冲突。
若产生冲突,则会回滚事务并重新执行。
乐观并发控制减少了锁的开销,提高了并发性能,但在冲突频繁的场景下会带来较大的性能损失。
3. 悲观并发控制(Pessimistic Concurrency Control,PCC)悲观并发控制是基于假设冲突经常发生的策略。
该策略在事务执行前会为所有访问的数据加锁,直到事务提交后才释放锁。
悲观并发控制保证了数据的一致性,但会增加锁的冲突和开销,降低系统的并发能力。
三、锁机制锁机制是实现并发控制的关键。
常见的锁机制包括共享锁(Shared Lock)和排他锁(Exclusive Lock)。
数据库锁定与事务的并发控制技术研究

数据库锁定与事务的并发控制技术研究概述:数据库是现代信息系统中的关键组成部分,为了保证数据的一致性、并发性和完整性,数据库必须提供有效的并发控制机制。
数据库锁定与事务的并发控制技术是其中最重要的一部分。
本文将讨论数据库锁定与并发控制技术的基本概念和原则,以及最常见的锁类型和事务隔离级别,同时还会探讨一些常见的并发控制技术。
一、数据库锁定概念与原则数据库锁定是为了控制对数据库对象的访问而引入的一种机制。
它通过限制并发操作来确保数据在并发访问时的一致性和完整性。
在实施并发控制时,应遵循以下原则:1. 互斥性原则:同一时间只能有一个事务对某个数据进行操作。
如果一个事务获得了某个数据资源的锁定,则其他事务必须等待该锁释放后才可继续执行。
2. 持续性原则:事务开始前所设置的锁定应保持到事务结束。
3. 有序性原则:事务获得锁的顺序应按照一定的规则进行,避免出现死锁。
二、常见的锁类型1. 排他锁(Exclusive Lock):也称为写锁,一个事务在持有排他锁时,其他事务无法读取或修改数据。
2. 共享锁(Shared Lock):也称为读锁,多个事务可以同时持有共享锁,但是无法持有排他锁。
3. 行级锁(Row Lock):在多行记录上独立设置的锁,可以精确控制对数据库的并发访问。
4. 表级锁(Table Lock):对整个表进行锁定,常用于对整个表进行大量修改的场景。
三、事务隔离级别事务隔离级别是数据库管理系统中用于控制事务之间相互影响的一种机制。
数据库事务的隔离级别从低到高可以分为:未提交读(Read Uncommitted)、提交读(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。
1. 未提交读(Read Uncommitted):该级别下,事务可以读取到其他事务未提交的数据。
这种级别下读取到的数据可能是脏数据,存在数据不一致的风险。
2. 提交读(Read Committed):该级别下,事务只能读取到其他事务已经提交的数据。
事物并发控制的方法有

事物并发控制的方法有事物并发控制是指在多个用户或进程同时访问和修改共享数据时,保证数据完整和一致性的一种机制。
在数据库管理系统中,事物并发控制是非常重要的,主要目的是防止数据不一致的情况发生。
下面将介绍常见的事物并发控制方法。
1. 锁锁是最常见和简单的事物并发控制方法之一。
它使用互斥锁(也称为排他锁)来保护共享资源,同一时间只允许一个事物访问共享资源。
当一个事物需要访问共享资源时,它必须先获得锁,然后执行操作并最后释放锁。
这种方法可以确保共享资源的互斥访问,从而避免数据不一致的情况。
然而,锁可能会造成死锁和性能瓶颈的问题。
2. 乐观并发控制乐观并发控制是一种基于版本控制的方法,它假设事物之间的并发冲突是少数的,因此采用乐观的观点。
它通过维护每个事物的读版本和写版本来实现并发控制。
当多个事物读取和修改同一个数据时,系统会比较它们的版本号来判断是否发生了冲突。
如果发生了冲突,则需要进行回滚和重试的操作,直到所有的事物完成。
乐观并发控制减少了锁的使用,提高了并发性能,但需要严格的版本控制和冲突检测。
3. MVCC(多版本并发控制)MVCC是一种数据库管理系统采用的事物并发控制方法。
它通过在每个事物中保存读取快照(snapshot)和写入版本来实现并发控制。
当一个事物启动时,它会获得一个快照,并将该快照与写入版本进行比较,从而确定是否可以读写该数据。
如果发现版本冲突,则需要进行回滚和重试。
MVCC允许读取和写入操作并发执行,提高了并发性能和并发程度。
4. 串行化串行化是最保守的事物并发控制方法,它要求事物串行执行,避免并发访问。
在串行化方法中,每个事物必须按顺序执行,不能并行执行。
虽然串行化方法可以避免并发冲突和数据不一致的问题,但它会大大降低并发性能和并发程度,限制了系统的吞吐量。
5. 时间戳排序时间戳排序是一种基于时间戳的事物并发控制方法,它要求事物按照时间戳的顺序执行。
每个事物在执行之前都会获得一个时间戳,事物按照时间戳的顺序执行,如果发生冲突,则需要进行回滚和重试。
并发控制与封锁

23
1. 丢失修改
丢失修改是指事务1与事务2从数据库中读 入同一数据并修改 事务2的提交结果破坏了事务1提交的结 果,导致事务1的修改被丢失。
24
2. 不可重复读
不可重复读是指事务1读取数据后,事务2 执行更新操作,使事务1无法再现前一次读 取结果。
25
3. 读“脏”数据
事务1修改某一数据,并将其写回磁盘 事务2读取同一数据后 事务1由于某种原因被撤消,这时事务1已修改过 的数据恢复原值 事务2读到的数据就与数据库中的数据不一致, 是不正确的数据,又称为“脏”数据。
4
用户标识和鉴定
用户标识和鉴定是由系统提供一定的方式让用户 标识自己的名字或身份,系统内部记录着所有合 法用户的标识,每次用户要求进入系统时,由系 统进行核实,通过鉴定后才提供机器的使用权。 用户标识和鉴定的方法
用一个用户名或用户标识符来标明用户的身份,系统以 此来鉴别用户的合法性。 用户名(Username)与口令(Password)相结合。 约定计算过程或者函数进行计算。
BEGIN TRANSACTION COMMIT ROLLBACK 事务的开始 事务的提交 事务的回滚
17
事务的特征
原子性(Atomicity)
一个事务是一个不可分割的工作单位,事务在执行时,应 该遵守“要么不做,要么全做”(Nothing or All)的原则, 即不允许完成部分的事务。
一致性(Consistency)
7
审计
审计功能是一种监视措施,它跟踪记录有关数据的 访问活动。 审计追踪把用户对数据库的所有操作自动记录下来, 存放在一个特殊文件中,即审计日志中。 记录的内容一般包括:
操作类型(如修改、查询等) 操作终端标识与操作者标识 操作日期和时间 操作所涉及到的相关数据(如基本表、视图、记录、属性 等) 数据的前象和后象等。
数据库并发控制的原理与应用技术

数据库并发控制的原理与应用技术数据库并发控制是指在多个用户或多个事务同时访问数据库时,保证数据的一致性、安全性和可靠性。
在现代数据库系统中,高并发是非常常见的情况,因此掌握数据库并发控制的原理与应用技术对于保证数据库的性能和稳定性至关重要。
一、并发控制的原理1. 事务事务是指对数据库进行访问和更新操作的一个单元。
事务具有以下特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
事务的原子性保证了事务中的所有操作要么全部执行成功,要么全部回滚;一致性保证了在事务开始和结束时,数据库必须处于一致的状态;隔离性保证了并发事务之间的相互隔离,使它们感觉不到其他事务的存在;持久性确保事务提交后,其结果将持久保存在数据库中,不会因为系统故障而丢失。
2. 并发问题并发问题主要包括丢失更新(Lost Update)、脏读(Dirty Read)、不可重复读(Non-Repeatable Read)和幻读(Phantom Read)。
为了解决并发问题,数据库引入了并发控制机制。
3. 并发控制方法并发控制方法主要包括锁、封锁(Locking)、时间戳(Timestamping)、多版本并发控制(MVCC)等。
二、并发控制的应用技术1. 锁锁是最常用的并发控制技术。
通过在数据库中添加锁,并发事务需要获取相应的锁才能进行访问或者修改数据。
常见的锁包括共享锁(Shared Lock)和排他锁(Exclusive Lock)。
共享锁允许多个事务同时获取锁并读取数据,而排他锁只允许单个事务获取锁并修改数据。
锁可以在事务的开始和结束时进行申请和释放,以保证事务的一致性和隔离性。
但是过多的加锁可能导致死锁问题,因此需要谨慎使用锁。
2. 封锁封锁是基于锁的并发控制技术。
通过在事务中对数据库中的数据项进行加锁,其他事务需要对同一数据项进行操作时,必须等待该数据项的封锁释放。
数据库事务的并发控制

数据库事务的并发控制数据库事务的并发控制是指在多个用户同时访问数据库时,保证数据的一致性和隔离性的一种机制。
在并发环境中,多个事务可能同时读取和修改数据库中的数据,如果没有合适的控制机制,可能会导致数据的错乱或者丢失。
因此,数据库管理系统提供了各种技术来确保事务的并发执行时不会产生冲突。
一、锁机制在数据库中,最基本的并发控制机制是锁机制。
通过事务在读取或修改某个数据时,对该数据进行锁定,其他事务在需要访问相同数据时,必须先获得相应的锁才能进行操作。
锁的类型包括共享锁和排他锁。
共享锁允许多个事务对同一数据进行读操作,而排他锁则只允许一个事务对数据进行写操作。
通过合理地给数据对象加锁,可以防止事务之间的读写冲突,保证数据的一致性和隔离性。
二、并发控制策略除了锁机制,数据库管理系统还提供了其他并发控制策略。
其中最常用的策略有以下几种:1. 串行化(Serializability):将并发执行的事务转化为串行执行的效果。
在串行化的并发控制策略下,事务按照先后顺序一个接一个地执行,每个事务都完全独立。
尽管串行化策略保证了完全的数据一致性,但是它的效率较低,不适用于并发访问较多的数据库系统。
2. 乐观并发控制(Optimistic Concurrency Control,简称OCC):这种策略假设并发事务之间的冲突是较少的,它允许多个事务同时访问数据库,并在事务提交时通过一种检查机制来保证数据的一致性。
当检测到冲突时,OCC会回滚某个事务并允许其他事务重新执行。
这种策略的优点是不需要显式加锁,减少了锁开销,但是需要更多的检查工作。
3. 悲观并发控制(Pessimistic Concurrency Control,简称PCC):与乐观并发控制相反,悲观并发控制策略假设并发事务之间的冲突是常见的,因此采取悲观的态度,在访问数据时总是假设其他事务会对数据进行修改,并对数据加锁。
虽然悲观并发控制策略能够确保数据的一致性,但是在高并发的情况下会导致大量的锁竞争,从而降低了系统的性能。
数据库事务管理中的锁定与并发控制机制

数据库事务管理中的锁定与并发控制机制引言:在现代大数据时代,数据库的并发访问是一项关键任务。
为了确保数据的完整性和一致性,数据库系统采用了各种锁定和并发控制机制。
本文将深入探讨数据库事务管理中的锁定与并发控制机制的重要性、常见技术和最佳实践。
一、锁定机制的定义与作用1.1 锁定机制的定义在数据库管理系统中,锁定是指对数据对象(如表、行或页)的访问进行限制的一种机制。
锁定机制确保同时运行的事务不会相互干扰或破坏数据的一致性。
1.2 锁定机制的作用锁定机制的主要目的是实现数据的一致性和隔离性。
它防止并发事务之间发生冲突,提供了对数据库对象的独占访问,并确保事务之间的操作顺序符合预期的结果。
二、常见的锁定技术2.1 共享锁与排他锁共享锁(Shared Lock)用于多个事务同时读取数据对象的情况,共享锁不阻止其他事务的读取操作,但阻止了其他事务对该数据对象进行修改。
排他锁(Exclusive Lock)用于仅有一个事务需要对数据对象进行修改的情况,排他锁会防止其他事务的读取和修改操作。
2.2 行级锁与表级锁行级锁(Row-level Locking)是指对数据表中的行进行锁定。
行级锁可以提高并发性,减少事务之间的冲突,但也需要更多的系统资源来维护和处理。
表级锁(Table-level Locking)是指对整个数据表进行锁定。
表级锁比较简单和高效,但会限制数据库的并发性能。
2.3 乐观锁与悲观锁乐观锁(Optimistic Locking)假设事务之间没有冲突并允许同时访问数据对象。
当事务提交时,系统会检查数据是否被其他事务修改过。
如果发现冲突,则回滚事务或重新尝试。
悲观锁(Pessimistic Locking)假设事务之间存在冲突并采取主动控制策略。
悲观锁会在事务访问数据对象时直接进行锁定,确保其他事务无法修改该数据。
三、并发控制机制的重要性与技术3.1 并发控制机制的重要性并发控制机制是数据库系统中的重要组成部分,它可以解决数据库访问的冲突和数据一致性问题。
并发控制概念

并发控制概念---------------------------------------------------------------------------------------事务执⾏⽅式:1. 事务串⾏执⾏2. 交叉并发⽅式3. 同时并发⽅式并发控制机制的任务:对并发操作进⾏正确调度;保证事务的隔离性;保证数据库的⼀致性;并发操作带来的数据不⼀致性:丢失修改,不可重复读,读“脏”数据。
并发控制就是要⽤正确的⽅式调度并发操作,使⼀个⽤户事务的执⾏不受其他事务的⼲扰,从⽽避免造成数据的不⼀致性。
-----------------------------------------------------------------------------------------并发控制的技术:封锁,时间戳,乐观控制法。
(商⽤DBMS⼀般采⽤封锁⽅法)什么是封锁?封锁就是事务T在对某个对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁。
加锁后事务T对该数据对象有了⼀定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。
基本封锁类型:排它锁(X锁,写锁)共享锁(S锁,读锁)排它锁:若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。
这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。
共享锁:若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,⽽不能加X锁,直到T释放A上的S锁。
这样保证其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
-------------------------------------------------------------------------------------死锁和活锁活锁:打个⽐⽅,有⼀次我和⼀个朋友开车误闯单⾏道,前⾯有车过来,我们只能找个⾓落躲进去让他,⽆奈对⾯⼀直有车开过来的话我们就得⼀直等下去。
并发控制

并发控制概述(续)
这种情况称为数据库的不一致性, 这种情况称为数据库的不一致性,是由并发操 作引起的。 作引起的。 在并发操作情况下,对甲、乙两个事务的操作 在并发操作情况下,对甲、 序列的调度是随机的。 序列的调度是随机的。 若按上面的调度序列执行, 若按上面的调度序列执行,甲事务的修改就被 丢失。 丢失。 原因: 步中乙事务修改A 原因:第4步中乙事务修改A并写回后覆盖了 甲事务的修改
(2)共享锁
共享锁又称为读锁 共享锁又称为读锁 若事务T对数据对象A加上S 其它事务只 若事务T对数据对象A加上S锁,则其它事务只 能再对A 而不能加X 直到T释放A 能再对A加S锁,而不能加X锁,直到T释放A上 的 S锁 保证其他事务可以读A 但在T释放A上的S 保证其他事务可以读A,但在T释放A上的S锁之 前不能对A 前不能对A做任何修改
读“脏”数据(续)
T1 ① R(C)=100 C←C*2 W(C)=200 ② R(C)=200 T2
T1将 值修改为200, T1将C值修改为200, 200 T2读到C T2读到C为200 读到 T1由于某种原因撤 T1由于某种原因撤 销,其修改作废,C 其修改作废, 恢复原值100 恢复原值100 这时T2读到的C 这时T2读到的C为 T2读到的
不可重复读(续)
不可重复读包括三种情况: 不可重复读包括三种情况: 1)事务T 读取某一数据后,事务T 1)事务T1读取某一数据后,事务T2对其做了修 事务 当事务T 再次读该数据时, 改,当事务T1再次读该数据时,得到与前一次 不同的值。 不同的值。
不可重复读(续)
T1 ① R(A)=50 R(B)=100 求和=150 ② R(B)=100 B←B*2 W(B)=200 T2
数据库锁机制与并发控制

数据库锁机制与并发控制数据库锁机制与并发控制是数据库管理系统中的重要概念,用于解决多用户同时访问数据库时可能出现的数据一致性问题。
本文将详细介绍数据库锁机制的原理、分类及应用,并探讨并发控制的方法和技术。
一、数据库锁机制1. 原理数据库锁机制是通过对数据库中的数据对象,如表、行、页等进行加锁操作,来控制对这些对象的访问权限。
当一个事务对某个数据对象加锁时,其他事务必须等待该锁释放才能继续访问该对象。
2. 分类数据库锁机制主要分为共享锁(Shared Lock)和排他锁(Exclusive Lock)两种类型。
- 共享锁(S锁):多个事务可以共享同一个资源的读权限,但是不能进行写操作。
适用于并发读取场景,提高了数据库的并发性能。
- 排他锁(X锁):事务独占一个资源的写权限,其他事务无法同时进行读或写操作。
适用于需要修改数据的操作,确保数据的一致性。
3. 应用数据库锁机制广泛应用于各种事务处理场景,以确保数据的正确性和一致性。
- 并发读取:读取数据时使用共享锁,多个事务可以共享读权限,不会相互影响。
- 并发写入:写入数据时使用排他锁,确保只有一个事务可以修改数据,避免数据冲突。
- 数据库事务:在事务执行期间,锁定相应的资源,保证事务的原子性、一致性、隔离性和持久性。
二、并发控制除了数据库锁机制,还存在着其他并发控制的方法和技术,本节将介绍其中的两种常见方式:串行化和并行化。
1. 串行化串行化是最简单粗暴的并发控制方法,将并发操作转换为串行操作,每次只允许一个事务执行。
虽然能保证数据的一致性,但是牺牲了系统的并发性能。
2. 并行化并行化是通过合理划分事务的边界和粒度,将事务并发执行,提高系统的性能。
主要采用以下两种技术:- 时间戳排序:为每个事务分配一个时间戳,根据时间戳的先后顺序进行调度,实现并发控制。
- 多版本并发控制(MVCC):为每个事务创建一个可见性视图,通过版本的方式控制不同事务对数据的访问,避免冲突。
数据库事务管理实现锁机制与并发控制

数据库事务管理实现锁机制与并发控制数据库系统在处理并发访问时需要保证数据的一致性和完整性。
为了实现这一目标,数据库引入了事务管理机制,其中包括锁机制和并发控制。
本文将详细讨论数据库事务管理中的锁机制和并发控制的实现方法。
一、事务和并发控制的概念事务是指一组数据库操作,它们被视为一个逻辑单元,要么全部执行成功,要么全部回滚失败。
事务具有4个基本特性,即原子性、一致性、隔离性和持久性。
并发控制是指多个事务在同一时间同时执行时,保持数据一致性和完整性的机制。
二、数据库中的锁机制1. 锁的类型在数据库中,主要有共享锁(Shared Lock)和排他锁(Exclusive Lock)两种类型的锁。
共享锁允许多个事务同时读取数据,而排他锁则只允许一个事务对数据进行写操作。
2. 锁的粒度锁的粒度决定了加锁的力度和粒度大小,主要分为表级锁(Table-level Lock)和行级锁(Row-level Lock)两种。
表级锁在操作整个表时加锁,行级锁则在操作表中的某一行时加锁。
3. 锁的获取和释放事务在访问数据库时需要先获得所需的锁,并在事务结束后释放锁。
锁的获取和释放需要使用锁管理机制来确保并发控制的正确实现。
三、数据库中的并发控制1. 事务的隔离级别数据库中定义了不同的隔离级别,包括读未提交(Read Uncommitted)、读提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)等。
不同的隔离级别对并发控制的策略和效果有所不同。
2. 事务的调度和调度策略事务的调度决定了事务的执行顺序,调度策略有两种常见的方式,即基于锁的调度和基于时间戳的调度。
基于锁的调度依赖于事务对数据加锁的方式,而基于时间戳的调度根据事务的开始和结束时间戳来确定执行顺序。
3. 死锁的检测与解决死锁是指多个事务互相等待对方所持有的资源而无法继续执行的情况。
数据库中采用死锁检测和死锁解决来处理死锁问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于封锁的事务并发控制概述发表时间:2010-05-14T10:46:24.013Z 来源:《计算机光盘软件与应用》2010年第4期供稿作者:卢成浪,徐湖鹏[导读] 叙述了关系型数据库管理系统中的事务管理和基于锁的事务并发控制方法。
卢成浪,徐湖鹏(温州大学瓯江学院,温州 325035)摘要:叙述了关系型数据库管理系统中的事务管理和基于锁的事务并发控制方法。
详细介绍了事务的串行化调度方法中的锁技术和锁协议,并深入讨论了锁的管理、死锁处理、幻影问题和其它加锁过程中可能出现的一些问题。
关键词:数据库管理系统;事务;并发控制;封锁中图分类号:TP311.131 文献标识码:A 文章编号:1007-9599 (2010) 04-0000-03Lock-Based Transaction Concurrency Control OverviewLu Chenglang,Xu Hupeng(Wenzhou University,Oujiang College,Wenzhou 325035,China)Abstract:An overview on the management of lock-based concurrency control of transactions is presented in this paper.The locking protocols and locking techniques of the locking are discussed in depth.Keywords:Database management systems;Transaction;Concurrency control;Lock一、引言事务是用户定义的一组数据库操作序列。
事务的执行结果将使数据库从一个一致性状态转变到另一个一致性状态。
为了提高吞吐量,系统中常常是多个事务并发执行。
这会产生多个事务同时存取同一数据的情况,从而破坏数据库的一致性。
所以数据库管理系统(Database Management System,DBMS)必须提供并发控制机制,使得并发的事务在冲突的时候被串行化执行。
这种调度称为可串行化调度。
其中基于封锁的并发控制机制是一种被广泛应用于商业DBMS中的并发控制机制。
二、事务的特性和并发的数据不一致性事务具有ACID特性:原子性(Atomicity),一致性(Consistency),隔离性(Isolation)和持续性(Durability)。
原子性指:事务包含的所有操作要么全部被执行,要么都不被执行;一致性指:事务的执行结果必须使数据库从一个一致性状态变到另一个一致性状态;隔离性指:在事务被提交以前,其操作结果对于其他事务不可见;持续性指:一旦事务成功提交,其对数据库中数据的改变是永久的。
事务是并发控制的基本单位,保证事务的ACID特性是事务处理的重要任务。
然而,事务的并发执行可能会破坏事务的ACID特性,而导致数据的不一致性:(一)Write-Write冲突,丢失更新。
它是由于事务之间的写冲突造成的。
两个事务T1和T2同时读入同一数据并修改,T2的提交破坏了T1的提交结果,导致T1的修改丢失。
(二)Read-Write冲突,也称不一致读。
不一致读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。
它包括三种情况:1.T1读取某一数据后, T2对其做了修改,当T1再次读取该数据时,得到与前一次不同的值;2.T1按一定的条件从数据库中读取了某些记录后,T2删除其中部分记录,当T1再次按相同条件读取数据时,发现某些记录神秘的消失了;3.T1按一定的条件从数据库中读取了某些记录后,T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。
后两种情况也称幻影现象。
(三)Write-Read冲突,也称读脏数据。
读脏数据指事务T1修改某数据,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,T2读到的数据就与数据中的数据不一致,则称T2读到的数据就为脏数据。
三、基于封锁的事务并发控制机制(一)锁的类型封锁是实现并发控制的一个非常重要的技术。
所谓封锁就是事务T在对某个数据对象例如表,记录等操作之前,先向系统发出请求,对其加锁。
加锁后事务T就对该数据对象有了一定的控制,在事务T释放它之前,其他事务不能更新该数据对象。
下面介绍DBMS涉及的锁:1.互斥锁(Exclusive Lock):用于写操作,又称写锁或者排他锁,记做X锁。
若事务T对数据对象A加上X锁,则只允许T读写A,其他事务都不能对A加任何锁,直到T释放A上的锁。
2.共享锁(Shared Lock):用于读操作,又称读锁,记做S锁。
若事务T对数据对象A加上S锁,则T可读A但不能写A,其他事务只能对A加S锁,而不能加X锁,直到T释放锁。
3.更新锁(Update Lock):用于更新操作。
等价于先加共享锁,在真正执行更新操作时,将共享锁升级为互斥锁。
大部分DMBS 都不使用这种锁。
4.增量锁(Increment Lock):用于增量操作,如果一个对象被上了增量锁,除增量操作以外任何读写操作都是被禁止的。
即增量锁之间不排斥。
因同时对某一对象的数值进行加一或者减一操作时,其结果与操作先后顺序是无关的,可以交换。
这种锁使用并不广泛。
5.意向锁(Intention Lock):它是因为引入多粒度对象而产生的,又可细分为:意向共享锁,意向排他锁和共享意向排他锁。
在DBMS 中被广泛使用的是共享锁,互斥锁和意向锁。
为了保证写操作的互斥性,不同事务对同一数据对象加锁时需要进行冲突检测。
检测可以借助锁的相容矩阵来判断,如图1(a)所示。
从中可以发现5种锁的强度偏序关系,如图1(b)所示。
(二)加锁管理和锁转换DBMS中处理事务加锁事宜的部分被称为锁管理器。
锁管理器维护着一个锁表,这是一个以数据对象标志为码的哈希表。
DBMS也在事务表中维护着每个事务的描述信息项,该记录中包含一个指向事务拥有的锁列表的指针。
在请求锁之前要检查这个列表,以确定不会对同一个锁请求两次。
加锁表中的每一项针对某个数据对象(可以是一页,一条记录等等),它包括下面的信息:拥有数据对象锁的事务数目,锁的属性(共享锁、互斥锁等)和一个指向加锁请求队列的指针。
1.加锁和解锁请求的实现。
当事务需要某个对象的锁时,需要将请求提交给锁管理器。
如果请求的是共享锁,当前请求队列为空,而且该对象没有处于互斥锁状态时,锁管理器就将同一加锁请求,并更新该对象的相应的锁表数据项。
如果请求的是互斥锁,并且没有事务拥有该对象的锁,那么锁管理器可以同意加锁请求,并更新该对象的相应锁表数据项。
对于其它情况,加锁请求不能立刻得到满足,加锁请求将被添加到该对象的加锁请求队列中,同时挂起请求加锁的事务。
当事务中止或者提交时,会释放自己拥有的锁。
当某个对象被释放时,锁管理器更新相应锁表数据项,并检查该对象的加锁请求队列。
如果请求能被接受,请求锁的事务将被唤醒并得到锁。
其中,加锁和解锁操作必须是原子操作。
为确保这两个操作的原子性,锁管理器需要使用操作系统的同步机制来小心的访问锁表。
2.锁转换。
事务可能需要对已经获得了共享锁的对象再请求排他锁。
此时,如果没有其他事务拥有该对象的共享锁,可以立即对事务的锁进行升级满足互斥锁请求,否则将该加锁请求加到等待队列的最前面。
但是,使用锁的升级不能避免由冲突更新操作导致的死锁。
例如,如果两个事务已经获得了一个对象的共享锁,又请求排他锁,就会导致死锁。
一个更好的法子是不进行锁升级,而是在开始时首先获得排他锁,当知道只需要共享锁就足够了时,再对锁降级。
但该方法又将会导致在某型情况下事务并需要排他锁时,降低了系统的并发度。
但是从整体来讲,它通过减少死锁改善了吞吐量。
因此该方法在目前的商用DBMS中被广泛使用。
并发度的问题可以通过引入前面提到的更新锁来改善。
在事务开始时申请更新锁而不是排他锁,就可以防止与读操作的冲突。
一旦确定不要对对象进行更新,就可以将锁降级为共享锁。
如果需要更新对象,则可以将锁升级为排他锁。
3.并发调度的可串行性和两段锁协议。
计算机系统对并发事务中并发操作的调度是随机的,而不同的调度可能会产生不同的结果。
其正确性的评判标准是:并发调度的可串行性。
即多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行的执行它们时的结果相同。
两段锁(Two Phase Locking,简称2PL)协议就是保证并发调度可串行性的封锁协议。
所谓“两段”的含义是,事务分为两个阶段,第一阶段是获得封锁,也成为扩张阶段。
在该阶段,事务可以申请获得任何数据项上的任何类型的锁,但不能释放任何锁。
第二阶段是释放锁,也成为收缩阶段。
在该阶段,事务可以释放其拥有的数据项上的任何类型的锁,但是不能再申请任何锁。
但是由于一个事务是由若干操作组成的,因此在实际执行过程中,很难判断一个事务还会不会再提出锁请求。
一种比较实用的方案就是:事务将一直保持它在执行过程中获得的所有的锁,直到该事务被提交或者撤销时才释放它们。
两阶段锁协议的工作流程可概括为:开始事务;在读数据前获得共享锁,在写操作前获得互斥锁,并在获取锁时进行锁的冲突检测;进行读/写操作;释放事务拥有的共享锁;结束事务(提交或者撤销);释放所有的本事务所持有的互斥锁。
4、封锁的粒度。
封锁对象的大小称为粒度。
目前,在商用DBMS中,最小锁定对象是记录,最大对象是表。
锁定的对象可以是一张数据表,一个页面或一条记录,甚至是一条记录中的某个字段。
封锁粒度与系统的并发度和并发控制的开销密切相关。
封锁的粒度越大,数据所能够封锁的数据单元就越少,并发度就越小,系统开销也越小;反之,封锁的粒度越小,并发度越高,系统开销也越大。
因此,如果在一个系统中同时支持多种封锁力度是比较理想的,这种封锁方法称为多粒度锁。
多粒度锁虽然灵活,但也带来了一个新的问题:具有隶属关系的锁定对象如何检测到对方的存在。
比如对于一个被上了表级写锁的数据表,尽管该表中的记录并没有被显示加锁,但应禁止对其包含的记录进行读写。
反之,对已经加了记录级写锁的记录,也不能对它所属的表再加读锁。
为此人们引入了意向锁来解决这个问题。
意向锁的含义是如果对一个对象上意向锁,则说明它的某个下一级对象要被加锁。
显然,要对小粒度对象上锁,必须先对其所属的上级对象加意向锁;要释放小粒度对象的锁,必须先释放本身,然后释放其上层对象的意向锁。
意向锁有三类:IS,IX 和SIX。
如果对一个数据对象加IS锁,表示它的下一级对象拟加S锁,比如想对某记录上读锁,那么就需先对其所属的表加IS锁,然后再对指定记录加读锁;如果对一个数据对象加IX锁,表示它的下一级对象拟加X锁;如果要对一个数据对象加SIX锁,表示对它加S锁,再加IX锁。