为了保证数据的完事性和一致性,数据库系统采用锁来实现事务的隔离性。各种大型数据库采用的锁基本理论是一致的,但在具体实现上各有差别。
从并发事务锁定的关系上看,可以分为共享锁定和独占锁定。从锁定的对象不同,一般可以分为表锁定和行锁定。
锁
共享锁用于读取数据操作,它是非独占的,允许其他事务同时读取其锁定的资源,但不允许其他事务更新它。
独占锁也叫排他锁,适用于修改数据的场合。它所锁定的资源,其他事务不能读取也不能修改。
当一个事务访问某种数据库资源时,如果执行select语句,必须先获得共享锁,如果执行insert、update或delete语句,必须获得独占锁,这些锁用于锁定被操作的资源。
当第二个事务也要访问相同的资源时,如果执行select语句,也必须先获得共享锁,如果执行insert、update或delete语句,也必须获得独占锁。此时根据已经旋转在资源上的锁的类型,来决定第二个事务应该等待第一个事务解除对应资源的锁定,还是可以立刻获得锁。
资源上已经放置的锁 |
第二个事务进行读操作 |
第二个事务进行更新操作 |
无 |
立即获得共享锁 |
立即获得独占锁 |
共享锁 |
立即获得共享锁 |
等待第一个事务解除共享锁 |
独占锁 |
等待第一个事务解除独占锁 |
等待第一个事务解除独占锁 |
1 共享锁
1、加锁的条件:当一个事务执行select语句时,数据库系统会为这个事务分配一把共享锁,来锁定被查询的数据。
2、解锁的条件:在默认情况下,数据被读取后,数据库系统立即解除共享锁。例如,当一个事务执行查询“SELECT * FROM accounts”语句时,数据库系统首先锁定第一行,读取之后,解除对第一行的锁定,然后锁定第二行。这样,在一个事务读操作过程中,允许其他事务同时更新accounts表中未锁定的行。
3、与其他锁的兼容性:如果数据资源上放置了共享锁,还能再放置共享锁和更新锁。
4、并发性能:具有良好的并发性能,当数据被放置共享锁后,还可以再放置共享锁或更新锁。所以并发性能很好。
2 独占锁
1、加锁的条件:当一个事务执行insert、update或delete语句时,数据库系统会自动对SQL语句操纵的数据资源使用独占锁。如果该数据资源已经有其他锁(任何锁)存在时,就无法对其再放置独占锁了。
2、解锁的条件:独占锁需要等到事务结束才能被解除。
3、兼容性:独占锁不能和其他锁兼容,如果数据资源上已经加了独占锁,就不能再放置其他的锁了。同样,如果数据资源上已经放置了其他锁,那么也就不能再放置独占锁了。
4、并发性能:不用说了,最差。只允许一个事务访问锁定的数据,如果其他事务也需要访问该数据,就必须等待,起到前一个事务结束,解除了独占锁,其他事务才有机会访问该数据。
3 更新锁
更新锁在的初始化阶段用来锁定可能要被修改的资源,这可以避免使用共享锁造成的死锁现象。例如,对于以下的update语句:
UPDATE accounts SET balance=900 WHERE id=1 |
更新操作需要分两步:
l 读取accounts表中id为1的记录。
l 执行更新操作。
如果在第一步使用共享锁,在第二步把锁升级为独占锁,就可能出现死锁现象。例如:两个事务都获取了同一数据资源的共享锁,然后都要把锁升级为独占锁,但需要等待另一个事务解除共享锁才能升级为独占锁,这就造成了死锁。
更新锁有如下特征:
l 加锁的条件:当一个事务执行update语句时,数据库系统会先为事务分配一把更新锁。
l 解锁的条件:当读取数据完毕,执行更新操作时,会把更新锁升级为独占锁。
l 与其他锁的兼容性:更新锁与共享锁是兼容的,也就是说,一个资源可以同时放置更新锁和共享锁,但是最多放置一把更新锁。这样,当多个事务更新相同的数据时,只有一个事务能获得更新锁,然后再把更新锁升级为独占锁,其他事务必须等到前一个事务结束后,才能获取得更新锁,这就避免了死锁。
l 并发性能:允许多个事务同时读锁定的资源,但不允许其他事务修改它。
相关推荐
"数据库的基本原理及数据库习题"这一主题涵盖了数据库设计、关系模型、SQL语言、事务处理、并发控制以及数据库恢复等关键知识点。 首先,我们需要了解数据库的基本概念。数据库(Database)是一个有组织的数据集合...
在第二章中,重点讲解了NoSQL数据库的基本原理,包括它如何打破关系模型的常规特征,以及它对完整性约束和事务机制的不同处理方式。 首先,关系模型是传统数据库的核心,包括实体(如学生、教师等)、属性(如学生...
数据库原理是计算机科学中的核心课程,它涉及到数据的组织、存储和检索,是信息系统和软件开发的基础。这个“学校数据库ppt”显然是一份专门讲解数据库原理的教学资源,旨在以浅显易懂的方式帮助学习者理解复杂的...
数据库原理是计算机科学中的核心领域...以上是关于“数据库原理”的一些基本知识点,实际应用中还会涉及更复杂的设计原则、安全机制、分布式数据库等内容。理解并掌握这些原理对于任何涉及数据管理的IT职业都至关重要。
ORACLE数据库锁表问题浅析 Oracle数据库锁机制是企业级数据库管理系统中一个非常重要的机制。锁机制的主要目的是为了保证数据的一致性和正确性,在多用户同时访问数据库时,避免数据的不一致和错误。Oracle数据库锁...
数据库系统原理是计算机科学中的一个核心课程,主要探讨如何存储、组织、管理和检索数据,以及如何确保数据的安全性和完整性。4375历年真题集合为准备这门课程的自学者提供了一份宝贵的资源,它包含了从2007年至2010...
1. 数据库系统概述:介绍数据库的基本概念、数据库管理系统(DBMS)的功能和类型,以及数据库系统的发展历程。 2. 关系模型:详细讲解关系数据模型,包括关系的定义、关系操作(如选择、投影、并、差、笛卡尔积等)...
数据库原理及应用是信息技术领域中的核心课程之一,它主要探讨如何有效地存储、管理和检索数据,以支持各种业务和信息系统。本书详细介绍了数据库的基础概念、设计原则以及实际应用,旨在帮助读者深入理解数据库的...
数据库系统原理是计算机科学中的重要学科,主要研究如何有效地存储、管理和检索数据。这份免费的课件涵盖了数据库的...学习这个课件,你将能够全面了解数据库系统的基本原理,为进一步的数据库管理和开发打下坚实基础。
事务是数据库操作的基本单位,具备原子性、一致性、隔离性和持久性(ACID特性)。原子性确保事务全部成功或全部失败,一致性保证事务前后数据库处于一致状态,隔离性防止并发事务间的干扰,而持久性则确保已提交的...
在“数据库基本原理教学课件”中,我们将深入探讨这一关键领域的基础概念和关键技术。 首先,我们从“数据库基本概念”出发。数据库(Database)是一个有组织的数据集合,它提供了一种有效的方式来存储、管理以及...
《数据库原理及应用》是计算机科学领域的一门基础课程,主要涵盖了数据库系统的基本概念、设计原理、实现技术和应用方法。第4版的更新通常会包括最新的理论进展和技术改进,以适应不断发展的信息技术环境。该资源包...
#### 2.1 数据库基本概念 - **数据模型**:描述数据以及它们之间的关系的方式。Informix采用关系模型,即使用表格形式来组织数据。 - **数据独立性**:指应用程序与存储在磁盘上的数据库的物理结构是相互独立的。...
理解这些基本元素是构建和操作数据库的基础。此外,还会深入到SQL(结构化查询语言),它是用于与数据库交互的语言,包括数据查询、插入、更新和删除操作,以及创建和修改表结构的命令。 答案中可能包含对关系代数...
"王能斌-数据库系统原理课件" 本课件涵盖了数据库系统原理的基础知识,包括数据库系统概论、实体关系模型、关系模型、SQL、完整性约束、事务处理、并发控制、数据库系统架构、新应用、XML等方面的内容。 数据库...
3. 数据库事务:事务是数据库操作的基本单位,保证了数据的一致性和可靠性。ACID特性(原子性、一致性、隔离性和持久性)是事务处理的基础,理解这些特性对数据库管理至关重要。 4. 数据库安全性:包括用户权限管理...
此外,多用户同时访问数据库时的并发控制机制,如锁机制和乐观锁,也是重要的知识点。 8. **数据库恢复**:当系统出现故障时,如何通过日志和备份恢复数据是数据库管理员的关键技能。这部分可能涉及检查点、前滚和...
根据提供的标题、描述和标签,“数据库管理系统原理与设计++(第3版)”这一书籍主要聚焦于数据库管理系统的理论基础及其设计方法。虽然部分内容没有给出具体文字信息,但基于书名我们可以推测书中涵盖的主要知识点...
了解了这些基本原理后,你可以进一步学习数据库的设计原则,如范式理论,以及性能调优技巧,如索引优化、查询优化和数据库架构设计。此外,分布式数据库、NoSQL数据库和云计算环境下的数据库管理也是当前数据库领域...