`
marb
  • 浏览: 418899 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

什么是共享锁?什么是排他锁?

 
阅读更多

共享锁(S锁):如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。
排他锁(X锁):如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。
简要说明为什么会发生死锁?解决死锁的主要方法是什么?
若干事务相互等待释放封锁,就陷入无限期等待状态,系统就进入死锁
解决死锁的方法应从预防和解除的两个方面着手:
(1)死锁的预防方法:①要求每一个事务必须一次封锁所要使用的全部数据(要么全成功,要么全不成功)②规定封锁数据的顺序,所有事务必须按这个顺序实行封锁。
(2)允许死锁发生,然后解除它,如果发现死锁,则将其中一个代价较小的事物撤消
,回滚这个事务,并释放此事务持有的封锁,使其他事务继续运行。

分享到:
评论

相关推荐

    Oracle五种表级排他锁的总结和归纳

    共享行排他锁是一种介于行级共享锁和行级排他锁之间的锁,它允许其他事务添加行级共享锁,但不允许添加行级排他锁。拥有 SRX 锁的事务可以执行更新操作,但其他事务只能进行 `SELECT` 查询。加锁语句为 `Lock Table ...

    并发编程下的锁机制,乐观锁、悲观锁、共享锁、排他锁、分布式锁、锁降级原理篇

    本文将详细讲解几种常见的锁机制:悲观锁、乐观锁、共享锁和排他锁,并简要介绍分布式锁以及锁降级原理。 1. **悲观锁**: 悲观锁是一种保守的策略,它假设在读取数据时,数据极有可能被其他线程修改。因此,悲观...

    数据库锁(行锁,表锁,共享锁,排他锁)脏读、不可重复读、幻读和事物隔离级别

    在MySQL的InnoDB引擎中,支持行级锁(Row Locks)、表级锁(Table Locks),以及共享锁(Shared Locks)和排他锁(Exclusive Locks)。行级锁通过索引实现,如果SQL语句没有利用索引,则会升级为表锁。 行锁具有...

    MySQL8.0锁机制和事务

    共享锁(S)允许拥有共享锁的事务读取该行数据,而排他锁(X)允许拥有排他锁的事务修改或删除该行数据。此外,InnoDB 存储引擎还支持意图锁,意图锁是表级锁,表明事务在后期会对该表的行施加共享锁或者排他锁。...

    SQLServer锁机制探究

    例如,案例1中,当事务T1执行UPDATE操作时,需要先获取排他锁,此时如果其他事务尝试加共享锁或排他锁,都会被阻塞,直到T1完成更新并释放锁。 死锁是并发控制中可能出现的一种现象,如案例4所示。当两个或更多事务...

    事务的四大隔离级别、数据库中的共享锁与排他锁、MySQL 的行级锁与表级锁

    数据库相关的笔记

    数据库锁学习文档

    首先,数据库锁分为两大类:排他锁(X)和共享锁(S)。排他锁允许持有者对锁定资源进行读写操作,但不允许其他用户进行任何操作。共享锁则允许多个用户同时读取同一资源,但不允许写操作。在Oracle数据库中,锁...

    SQL的锁机制

    - **共享意图排他锁 (SIX)**:表示事务已获得共享锁,并打算进一步升级为排他锁。 ##### 2. 锁的层次结构 锁可以作用于不同的层次,如页级锁、表级锁等。 - **表级锁**:整个表被锁定,效率低但能防止所有并发...

    Oracle 锁机制问题详解

    只有在针对指定表的所有 DML 事务结束,并且记录上的排他锁以及表上的共享锁都被解除之后,我们才可以获得执行 DDL 命令所需的排他锁。如果无法获取所需的排他锁(通常是因为其他会话已经获得了用于 DML 语句的共享...

    MySQL锁详细介绍

    MySQL中的锁大致可以分为两大类:从数据库系统的角度,包括独占锁(排他锁)、共享锁、更新锁以及各种类型的意向锁;从锁的作用范围,可以分为行级锁、表级锁和页级锁等。下面我们将详细讨论这些锁的特性。 1. **...

    DB2锁相关情况介绍

    例如,一个读取共享锁(S)与另一个读取共享锁(S)是兼容的,但与一个排他锁(X)是不兼容的。 #### 五、DB2锁的实现方式 DB2通过以下几种方式实现锁: 1. **死锁检测与避免**:当检测到死锁时,DB2会选择回滚...

    sybase数据库查被锁的表.doc

    在 Sybase 数据库中,锁机制分为两种:共享锁(Shared Lock)和排他锁(Exclusive Lock)。共享锁允许多个事务同时读取同一个资源,而排他锁则排他事务访问该资源。锁机制可以在不同的粒度上生效,包括表锁、页锁和...

    委托+事件+多线程+排他锁的c#例子

    排他锁(Mutex)则用于线程同步,确保对共享资源的互斥访问。王杨可能是这个示例代码的作者或讲解者。下面将详细阐述这些概念及其在C#中的应用。 首先,**委托**是C#中的一个类型,它代表方法的引用。委托可以被...

    相克军 ORACLE 讲座 深度剖析 锁 笔记

    - **共享行级排他锁(SRX)**:介于共享锁和排他锁之间,允许读取和修改其他行,但不能获取排他锁。 4. **锁的兼容性** - Oracle锁的兼容性决定了哪些锁可以与另一些锁并存。例如,共享锁与共享锁兼容,而共享锁...

    校招应用软件开发工程师(Java)

    - `java.util.concurrent.Lock`接口提供了更细粒度的锁机制,可以实现线程安全。 - `ReadWriteLock`允许多个读操作并发,但在写操作时会独占资源,确保线程安全。 3. **Java泛型**: - 泛型是Java 1.5引入的新...

    sybase锁、索引等介绍

    当一个事务对某个资源(如表、数据页或行)施加了共享锁时,其他事务仍然可以对该资源进行读取操作并获得共享锁,但无法获得排他锁(Exclusive Lock)。这意味着多个事务可以同时读取同一个资源,但不能同时对其进行...

Global site tag (gtag.js) - Google Analytics