共享锁(S锁):如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。
排他锁(X锁):如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。
简要说明为什么会发生死锁?解决死锁的主要方法是什么?
若干事务相互等待释放封锁,就陷入无限期等待状态,系统就进入死锁
解决死锁的方法应从预防和解除的两个方面着手:
(1)死锁的预防方法:①要求每一个事务必须一次封锁所要使用的全部数据(要么全成功,要么全不成功)②规定封锁数据的顺序,所有事务必须按这个顺序实行封锁。
(2)允许死锁发生,然后解除它,如果发现死锁,则将其中一个代价较小的事物撤消
,回滚这个事务,并释放此事务持有的封锁,使其他事务继续运行。
- 浏览: 418899 次
- 性别:
- 来自: 北京
最新评论
-
masuweng:
好好好,有时间了练习下
使用Java混淆工具yguard -
shengshihouzhe:
第一个eg实现的应该是循环栅栏,不是计数器
Java Phaser使用 -
yukaizhao:
推荐一个很全的guava教程 http://outofmemo ...
google guava cache 处理 -
yanqingluo:
谢谢分享,已关注.
BTrace入门及使用实例 -
luoxiaohui_java:
谢谢分享!
这么好的文章,怎么没人回复呢。
ibm was nd websphere 集群
相关推荐
共享行排他锁是一种介于行级共享锁和行级排他锁之间的锁,它允许其他事务添加行级共享锁,但不允许添加行级排他锁。拥有 SRX 锁的事务可以执行更新操作,但其他事务只能进行 `SELECT` 查询。加锁语句为 `Lock Table ...
本文将详细讲解几种常见的锁机制:悲观锁、乐观锁、共享锁和排他锁,并简要介绍分布式锁以及锁降级原理。 1. **悲观锁**: 悲观锁是一种保守的策略,它假设在读取数据时,数据极有可能被其他线程修改。因此,悲观...
在MySQL的InnoDB引擎中,支持行级锁(Row Locks)、表级锁(Table Locks),以及共享锁(Shared Locks)和排他锁(Exclusive Locks)。行级锁通过索引实现,如果SQL语句没有利用索引,则会升级为表锁。 行锁具有...
共享锁(S)允许拥有共享锁的事务读取该行数据,而排他锁(X)允许拥有排他锁的事务修改或删除该行数据。此外,InnoDB 存储引擎还支持意图锁,意图锁是表级锁,表明事务在后期会对该表的行施加共享锁或者排他锁。...
例如,案例1中,当事务T1执行UPDATE操作时,需要先获取排他锁,此时如果其他事务尝试加共享锁或排他锁,都会被阻塞,直到T1完成更新并释放锁。 死锁是并发控制中可能出现的一种现象,如案例4所示。当两个或更多事务...
数据库相关的笔记
首先,数据库锁分为两大类:排他锁(X)和共享锁(S)。排他锁允许持有者对锁定资源进行读写操作,但不允许其他用户进行任何操作。共享锁则允许多个用户同时读取同一资源,但不允许写操作。在Oracle数据库中,锁...
- **共享意图排他锁 (SIX)**:表示事务已获得共享锁,并打算进一步升级为排他锁。 ##### 2. 锁的层次结构 锁可以作用于不同的层次,如页级锁、表级锁等。 - **表级锁**:整个表被锁定,效率低但能防止所有并发...
只有在针对指定表的所有 DML 事务结束,并且记录上的排他锁以及表上的共享锁都被解除之后,我们才可以获得执行 DDL 命令所需的排他锁。如果无法获取所需的排他锁(通常是因为其他会话已经获得了用于 DML 语句的共享...
MySQL中的锁大致可以分为两大类:从数据库系统的角度,包括独占锁(排他锁)、共享锁、更新锁以及各种类型的意向锁;从锁的作用范围,可以分为行级锁、表级锁和页级锁等。下面我们将详细讨论这些锁的特性。 1. **...
例如,一个读取共享锁(S)与另一个读取共享锁(S)是兼容的,但与一个排他锁(X)是不兼容的。 #### 五、DB2锁的实现方式 DB2通过以下几种方式实现锁: 1. **死锁检测与避免**:当检测到死锁时,DB2会选择回滚...
在 Sybase 数据库中,锁机制分为两种:共享锁(Shared Lock)和排他锁(Exclusive Lock)。共享锁允许多个事务同时读取同一个资源,而排他锁则排他事务访问该资源。锁机制可以在不同的粒度上生效,包括表锁、页锁和...
排他锁(Mutex)则用于线程同步,确保对共享资源的互斥访问。王杨可能是这个示例代码的作者或讲解者。下面将详细阐述这些概念及其在C#中的应用。 首先,**委托**是C#中的一个类型,它代表方法的引用。委托可以被...
- **共享行级排他锁(SRX)**:介于共享锁和排他锁之间,允许读取和修改其他行,但不能获取排他锁。 4. **锁的兼容性** - Oracle锁的兼容性决定了哪些锁可以与另一些锁并存。例如,共享锁与共享锁兼容,而共享锁...
- `java.util.concurrent.Lock`接口提供了更细粒度的锁机制,可以实现线程安全。 - `ReadWriteLock`允许多个读操作并发,但在写操作时会独占资源,确保线程安全。 3. **Java泛型**: - 泛型是Java 1.5引入的新...
当一个事务对某个资源(如表、数据页或行)施加了共享锁时,其他事务仍然可以对该资源进行读取操作并获得共享锁,但无法获得排他锁(Exclusive Lock)。这意味着多个事务可以同时读取同一个资源,但不能同时对其进行...