`

数据库锁的基本原理

阅读更多

为了保证数据的完事性和一致性,数据库系统采用锁来实现事务的隔离性。各种大型数据库采用的锁基本理论是一致的,但在具体实现上各有差别。

从并发事务锁定的关系上看,可以分为共享锁定和独占锁定。从锁定的对象不同,一般可以分为表锁定和行锁定。

共享锁用于读取数据操作,它是非独占的,允许其他事务同时读取其锁定的资源,但不允许其他事务更新它。

独占锁也叫排他锁,适用于修改数据的场合。它所锁定的资源,其他事务不能读取也不能修改。

当一个事务访问某种数据库资源时,如果执行select语句,必须先获得共享锁,如果执行insertupdatedelete语句,必须获得独占锁,这些锁用于锁定被操作的资源。

当第二个事务也要访问相同的资源时,如果执行select语句,也必须先获得共享锁,如果执行insertupdatedelete语句,也必须获得独占锁。此时根据已经旋转在资源上的锁的类型,来决定第二个事务应该等待第一个事务解除对应资源的锁定,还是可以立刻获得锁。

资源上已经放置的锁

第二个事务进行读操作

第二个事务进行更新操作

立即获得共享锁

立即获得独占锁

共享锁

立即获得共享锁

等待第一个事务解除共享锁

独占锁

等待第一个事务解除独占锁

等待第一个事务解除独占锁

 

1 共享锁

1、加锁的条件:当一个事务执行select语句时,数据库系统会为这个事务分配一把共享锁,来锁定被查询的数据。

2、解锁的条件:在默认情况下,数据被读取后,数据库系统立即解除共享锁。例如,当一个事务执行查询“SELECT * FROM accounts”语句时,数据库系统首先锁定第一行,读取之后,解除对第一行的锁定,然后锁定第二行。这样,在一个事务读操作过程中,允许其他事务同时更新accounts表中未锁定的行。

3、与其他锁的兼容性:如果数据资源上放置了共享锁,还能再放置共享锁和更新锁。

4、并发性能:具有良好的并发性能,当数据被放置共享锁后,还可以再放置共享锁或更新锁。所以并发性能很好。 

2 独占锁

1、加锁的条件:当一个事务执行insertupdatedelete语句时,数据库系统会自动对SQL语句操纵的数据资源使用独占锁。如果该数据资源已经有其他锁(任何锁)存在时,就无法对其再放置独占锁了。

2、解锁的条件:独占锁需要等到事务结束才能被解除。

3、兼容性:独占锁不能和其他锁兼容,如果数据资源上已经加了独占锁,就不能再放置其他的锁了。同样,如果数据资源上已经放置了其他锁,那么也就不能再放置独占锁了。

4、并发性能:不用说了,最差。只允许一个事务访问锁定的数据,如果其他事务也需要访问该数据,就必须等待,起到前一个事务结束,解除了独占锁,其他事务才有机会访问该数据。

3 更新锁

更新锁在的初始化阶段用来锁定可能要被修改的资源,这可以避免使用共享锁造成的死锁现象。例如,对于以下的update语句:

UPDATE accounts SET balance=900 WHERE id=1

更新操作需要分两步:

读取accounts表中id1的记录。

执行更新操作。

如果在第一步使用共享锁,第二步把锁升级为独占锁,就可能出现死锁现象。例如:两个事务都获取了同一数据资源的共享锁,然后都要把锁升级为独占锁,但需要等待另一个事务解除共享锁才能升级为独占锁,这就造成了死锁。

更新锁有如下特征:

加锁的条件:当一个事务执行update语句时,数据库系统会先为事务分配一把更新锁。

解锁的条件:当读取数据完毕,执行更新操作时,会把更新锁升级为独占锁。

与其他锁的兼容性:更新锁与共享锁是兼容的,也就是说,一个资源可以同时放置更新锁和共享锁,但是最多放置一把更新锁。这样,当多个事务更新相同的数据时,只有一个事务能获得更新锁,然后再把更新锁升级为独占锁,其他事务必须等到前一个事务结束后,才能获取得更新锁,这就避免了死锁。

并发性能:允许多个事务同时读锁定的资源,但不允许其他事务修改它。

<!--EndFragment-->
分享到:
评论

相关推荐

    数据库的基本原理及数据库习题

    "数据库的基本原理及数据库习题"这一主题涵盖了数据库设计、关系模型、SQL语言、事务处理、并发控制以及数据库恢复等关键知识点。 首先,我们需要了解数据库的基本概念。数据库(Database)是一个有组织的数据集合...

    NoSQL数据库原理-第二章-NoSQL数据库的基本原理.pptx

    在第二章中,重点讲解了NoSQL数据库的基本原理,包括它如何打破关系模型的常规特征,以及它对完整性约束和事务机制的不同处理方式。 首先,关系模型是传统数据库的核心,包括实体(如学生、教师等)、属性(如学生...

    学校数据库ppt数据库原理,浅显易懂

    数据库原理是计算机科学中的核心课程,它涉及到数据的组织、存储和检索,是信息系统和软件开发的基础。这个“学校数据库ppt”显然是一份专门讲解数据库原理的教学资源,旨在以浅显易懂的方式帮助学习者理解复杂的...

    数据库原理数据库原理.rar

    数据库原理是计算机科学中的核心领域...以上是关于“数据库原理”的一些基本知识点,实际应用中还会涉及更复杂的设计原则、安全机制、分布式数据库等内容。理解并掌握这些原理对于任何涉及数据管理的IT职业都至关重要。

    ORACLE数据库锁表问题浅析.pdf

    ORACLE数据库锁表问题浅析 Oracle数据库锁机制是企业级数据库管理系统中一个非常重要的机制。锁机制的主要目的是为了保证数据的一致性和正确性,在多用户同时访问数据库时,避免数据的不一致和错误。Oracle数据库锁...

    数据库系统原理4375历年真题()

    数据库系统原理是计算机科学中的一个核心课程,主要探讨如何存储、组织、管理和检索数据,以及如何确保数据的安全性和完整性。4375历年真题集合为准备这门课程的自学者提供了一份宝贵的资源,它包含了从2007年至2010...

    04735数据库系统原理_2022年4月线上实践题(含答案、自学考试大纲)

    1. 数据库系统概述:介绍数据库的基本概念、数据库管理系统(DBMS)的功能和类型,以及数据库系统的发展历程。 2. 关系模型:详细讲解关系数据模型,包括关系的定义、关系操作(如选择、投影、并、差、笛卡尔积等)...

    数据库原理及应用 电子书

    数据库原理及应用是信息技术领域中的核心课程之一,它主要探讨如何有效地存储、管理和检索数据,以支持各种业务和信息系统。本书详细介绍了数据库的基础概念、设计原则以及实际应用,旨在帮助读者深入理解数据库的...

    数据库系统原理课件免费下载

    数据库系统原理是计算机科学中的重要学科,主要研究如何有效地存储、管理和检索数据。这份免费的课件涵盖了数据库的...学习这个课件,你将能够全面了解数据库系统的基本原理,为进一步的数据库管理和开发打下坚实基础。

    数据库系统原理期末考试简答题.docx

    事务是数据库操作的基本单位,具备原子性、一致性、隔离性和持久性(ACID特性)。原子性确保事务全部成功或全部失败,一致性保证事务前后数据库处于一致状态,隔离性防止并发事务间的干扰,而持久性则确保已提交的...

    数据库基本原理教学课件

    在“数据库基本原理教学课件”中,我们将深入探讨这一关键领域的基础概念和关键技术。 首先,我们从“数据库基本概念”出发。数据库(Database)是一个有组织的数据集合,它提供了一种有效的方式来存储、管理以及...

    数据库原理及应用(第4版).zip

    《数据库原理及应用》是计算机科学领域的一门基础课程,主要涵盖了数据库系统的基本概念、设计原理、实现技术和应用方法。第4版的更新通常会包括最新的理论进展和技术改进,以适应不断发展的信息技术环境。该资源包...

    数据库实现原理 数据库

    #### 2.1 数据库基本概念 - **数据模型**:描述数据以及它们之间的关系的方式。Informix采用关系模型,即使用表格形式来组织数据。 - **数据独立性**:指应用程序与存储在磁盘上的数据库的物理结构是相互独立的。...

    数据库系统原理答案 中国矿业大学出版

    理解这些基本元素是构建和操作数据库的基础。此外,还会深入到SQL(结构化查询语言),它是用于与数据库交互的语言,包括数据查询、插入、更新和删除操作,以及创建和修改表结构的命令。 答案中可能包含对关系代数...

    王能斌-数据库系统原理课件

    "王能斌-数据库系统原理课件" 本课件涵盖了数据库系统原理的基础知识,包括数据库系统概论、实体关系模型、关系模型、SQL、完整性约束、事务处理、并发控制、数据库系统架构、新应用、XML等方面的内容。 数据库...

    数据库《数据库原理及应用》实验指导书

    3. 数据库事务:事务是数据库操作的基本单位,保证了数据的一致性和可靠性。ACID特性(原子性、一致性、隔离性和持久性)是事务处理的基础,理解这些特性对数据库管理至关重要。 4. 数据库安全性:包括用户权限管理...

    数据库原理及应用教程第四版课后答案

    此外,多用户同时访问数据库时的并发控制机制,如锁机制和乐观锁,也是重要的知识点。 8. **数据库恢复**:当系统出现故障时,如何通过日志和备份恢复数据是数据库管理员的关键技能。这部分可能涉及检查点、前滚和...

    数据库管理系统原理与设计++(第3版)

    根据提供的标题、描述和标签,“数据库管理系统原理与设计++(第3版)”这一书籍主要聚焦于数据库管理系统的理论基础及其设计方法。虽然部分内容没有给出具体文字信息,但基于书名我们可以推测书中涵盖的主要知识点...

    数据库工作原理资料

    了解了这些基本原理后,你可以进一步学习数据库的设计原则,如范式理论,以及性能调优技巧,如索引优化、查询优化和数据库架构设计。此外,分布式数据库、NoSQL数据库和云计算环境下的数据库管理也是当前数据库领域...

Global site tag (gtag.js) - Google Analytics