`

转:共享锁(S锁)和排它锁(X锁)

 
阅读更多

来源:http://www.cnblogs.com/jsStudyjj/p/5382557.html

 

共享锁,又称为读锁,可以查看但无法修改和删除的一种数据锁。

中文名: 共享锁
外文名: Share Locks
其他用户: 可以并发读取数据
都不能获取: 数据上的排它锁
由非更新: 操作创建的锁

释义

共享锁:(读取)操作创建的锁。其他用户可以并发读取数据,但任何事物都不能获取数据上的排它锁,直到已释放所有共享锁。
共享锁(S锁)又称为读锁,若事务T对数据对象A加上S锁,则事务T只能读A;其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
 排它锁
排它锁:排它锁又称为写锁((eXclusive lock,简记为X锁)),若事物T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。它防止任何其它事务获取资源上的锁,直到在事务的末尾将资源上的原始锁释放为止。

独占锁和共享锁的区别

1.共享锁(S锁):如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排它锁。获准共享锁的事务只能读数据,不能修改数据。
排他锁(X锁):如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。
2.共享锁下其它用户可以并发读取,查询数据。但不能修改,增加,删除数据。资源共享.
 

共享锁的使用

在第一个连接中执行以下语句
begin tran
select * from table1 holdlock -holdlock人为加锁
where B='b2'
waitfor delay '00:00:30' --等待30秒
commit tran
在第二个连接中执行以下语句
begin tran
select A,C from table1
where B='b2'
update table1
set A='aa'
where B='b2'
commit tran
若同时执行上述两个语句,则第二个连接中的select查询可以执行
而update必须等待第一个事务释放共享锁转为排它锁后才能执行 即要等待30秒
可能很难,但是相信,坚持总会看到奇迹。 在结果还没有的时候,我唯一可以选择的就是努力奋斗,静下心来。 结果会慢慢的浮出水面。

 

分享到:
评论

相关推荐

    oracle数据库锁使用

    2. 排它锁(X锁):排它锁是最严格的锁,它提供独占的写权限,不允许其他事务进行任何读或写操作。通过`Lock Table TableName In Exclusive Mode`语句可以设置。一旦表被加了排它锁,其他事务只能进行查询,不能执行...

    Oracle的锁机制

    共享锁(S)、排它锁(X)、行级共享锁(RS)、行级排它锁(RX)和共享行级排它锁(SRX)是不同级别的行级锁。 按加锁的意向,有意向共享锁(IS)、意向排它锁(IX)和共享意向排它锁(SIX)。意向锁用于表明一个...

    SQL server 中锁机制详解

    排它锁(X):在事务对记录修改时,SQL Server 实施排它锁,其它事务看不到该数据,直到提交。 更新锁(U):当数据修改时,首先实施更新锁,遍历整张表,找到要修改的记录,再将更新锁提升为排它锁,进行修改。...

    锁的概述 (ctrl+2 sql)

    例如,共享锁防止了脏读,排它锁防止了丢失更新和不可重复读,更新锁则是为了减少死锁的可能性。意向锁则提高了锁管理的效率,使得数据库系统在处理锁请求时不必逐个检查底层资源。 总结来说,锁是数据库并发控制的...

    oracle锁机制探讨

    DML锁的目的在于保证并发情况下的数据完整性,它也是我们最常见和常用的锁,本文我们主要讨论DML锁。在Oracle数据库中,DML锁...3 SX(Row-X) 行级排它锁,在提交前不允许做DML操作 Insert、Update、Delete and so on

    oracle锁机制_bzm整理1

    - 共享行级排它锁(SRX锁) 6. **SQL操作与锁模式**: - NULL:允许RS、RX、S、SRX、X锁,例如SELECT语句。 - RS:允许RS、RX、S、SRX,例如`LOCK TABLE ... IN ROW SHARE MODE`。 - RX:允许RS、RX,例如...

    MS SQL SERVER动态锁分析与应用.pdf

    除了基础的共享锁(S锁)和排它锁(X锁),SQL SERVER引入了更新锁(Update Lock)和意向锁(Intention Lock)。更新锁用于防止死锁,当事务尝试修改数据时,首先施加更新锁,实际修改时升级为排它锁,未修改时降级...

    mysql事务与锁机制(存储引擎和锁、MyISAM锁机制、InnoDB锁机制、Next-Key锁、Dead-Lock).docx

    - **共享锁(S锁)**:允许多个事务同时读取数据,但阻止其他事务获取排它锁。 - **排它锁(X锁)**:阻止其他事务获取任何类型的锁。用于写操作,保证数据在修改过程中不被其他事务读取或修改。 - **意向锁**:意向...

    Oracle多粒度封锁机制研究(锁)借鉴.pdf

    在Oracle中,最基本的锁类型是排它锁(X锁)和共享锁(S锁)。X锁用于保护数据不被其他事务修改,而S锁则允许多个事务同时读取数据但不允许修改。这两种锁遵循ACID原则,防止并发操作导致的数据不一致问题,如丢失...

    ORACLE关于锁和V$LOCK的分析.docx

    * 5=S/Row-X (SSX,共享行级排它锁) * 6=Exclusive(排它锁) 在实际应用中,锁机制是非常重要的。锁机制可以防止多个用户同时访问同一个数据项,避免了数据的不一致性和错误。但是,锁机制也可能导致死锁的出现。...

    DB2和 Oracle的并发控制(锁)比较

    锁分为两大类:排它锁(X锁)和共享锁(S锁)。X锁允许持有者对数据进行修改,不允许其他事务获取任何类型的锁;S锁则允许事务读取数据,但不允许其他事务获取X锁,防止数据被修改。 在DB2中,锁的应用是多粒度的,...

    ORACLE锁深入分析

    在Oracle中,锁主要分为两大类型:排它锁(Exclusive Locks,X锁)和共享锁(Share Locks,S锁)。X锁允许一个事务独占数据对象,不允许其他事务进行修改。而S锁则允许多个事务共享数据对象,可以读取但不能进行删除...

    有关Oracle封锁机制的研究

    在Oracle数据库中,锁的主要类型包括排它锁(X锁)和共享锁(S锁)。 - **排它锁(X锁)**:当事务T对数据D加X锁时,其他任何事务都无法对D添加任何类型的锁,直到T释放D上的X锁。通常,在修改数据前需要获取排它锁...

    GBase 8s 锁简介

    1. 数据库级锁(Database-Level Locks):在访问数据库时,系统会自动在该数据库上加上一个共享(S)锁,以防止其他用户删除数据库或在该数据库上加排它(X)锁。 2. 表级锁(Table-Level Locks):锁定的对象是一...

    DB2和 Oracle的并发控制(锁)的比较

    锁主要有两种类型:排它锁(X锁)和共享锁(S锁)。X锁不允许其他事务对锁定资源进行任何操作,而S锁仅允许读取,不允许修改。 2. DB2的并发控制 在DB2中,锁的应用非常灵活,支持对表空间、表、行和索引进行多粒度...

    oracle多粒度封锁机制研究(论坛

    锁可以分为两类:**排它锁(X锁)**和**共享锁(S锁)**。 - **排它锁(X锁)**:如果事务\( T \)对数据\( D \)加了X锁,则其他任何事务都不能再对\( D \)加任何类型的锁,直到事务\( T \)释放\( D \)上的X锁。通常...

    快速掌握SQL Server锁的相关概念

    - **独占锁(排它锁)**:一旦某一资源被加上了独占锁,其他任何进程都无法再对该资源加任何类型的锁,只能等待该资源上的独占锁被释放。 - **共享锁**:多个进程可以同时对同一资源加上共享锁,但不能加独占锁。 ...

    用DELPHI开发基于SQL SERVER2000的多客户应用程序.pdf

    锁可以分为两大类:排它锁(X锁)和共享锁(S锁)。X锁是一种独占锁,一旦事务对数据加了X锁,其他事务既不能读取也不能修改这部分数据;S锁是共享锁,允许多个事务同时对数据加S锁进行读取,但是不能进行修改。 在...

Global site tag (gtag.js) - Google Analytics