行级锁表级锁总结

1、DML锁包括行级锁(TX)和表级锁(TM)

2、行级锁不是单独存在的,当事务获得了某些数据行上的行级锁时,此事务同时获得了数据行所属表上的表级锁,因为表级锁能够防止系统中并发地执行有冲突的 DDL 操作,避免当前事务中的数据操作被并发地DDL 操作影响。

3、表级锁分为5种,限制程度升序排列:

   (1)行共享(row share):与行排他类似,区别是别的事务还可以在此表上加任何排他锁。(除排他(exclusive)外)

   (2)行排他(row exclusive):其他事务依然可以并发地对相同数据表执行查询,插入,更新,删除操作,或对表内数据行加锁的操作,但不能有其他的排他锁(自身是可以的,没发现有什么用)

   (3)共享(share):在表没有被任何DML操作时,多个事务都可加锁,但只有在仅一个事务加锁的情况下只有此事务才能对表更新;当表已经被更新或者指定要更新时(select for update),任何事务都不能加此锁了。

   (4)共享行排他(share row exclusive):在表没有被任何DML操作时,只有一个事务可以加锁,可以更新,书上说别的事务可以使用select for update锁定选中的数据行,可是实验后没被验证。

   (5)排他(exclusive):在表没有被任何DML操作时,只有一个事务可以加锁,可以更新,与共享行排他的区别还没有发现

 

  否允许锁操作?
 
SQL 语句表级锁模式RSRXSSRXX

SELECT...FROM table...
 

 
Y
 
Y
 
Y
 
Y
 
Y
 
INSERT INTO table ...
 
RX
 
Y
 
Y
 
N
 
N
 
N
 
UPDATE table ...
 
RX
 
Y*
 
Y*
 
N
 
N
 
N
 
DELETE FROM table ...
 
RX
 
Y*
 
Y*
 
N
 
N
 
N
 
SELECT ... FROM table
FOR UPDATE OF ...

 
RS
 
Y*
 
Y*
 
Y*
 
Y*
 
N
 
LOCK TABLE table IN ROW SHARE MODE
 
RS
 
Y
 
Y
 
Y
 
Y
 
N
 
LOCK TABLE table IN ROW EXCLUSIVE MODE
 
RX
 
Y
 
Y
 
N
 
N
 
N
 
LOCK TABLE table IN
SHARE MODE

 
S
 
Y
 
N
 
Y
 
N
 
N
 
LOCK TABLE table IN
SHARE ROW EXCLUSIVE MODE

 
SRX
 
Y
 
N
 
N
 
N
 
N
 
LOCK TABLE table IN EXCLUSIVE MODE
 
X
 
N
 
N
 
N
 
N
 
N


DML 语句 是否存在
行级锁
表级锁的
模式

SELECT ... FROM table
 
  
INSERT INTO table ...
 
X
 
RX
 
UPDATE table ...
 
X
 
RX
 
DELETE FROM table ...
 
X
 
RX
 
SELECT ... FROM table ... FOR UPDATE OF ...
 
X
 
RS
 
LOCK TABLE table IN ...
 
  
ROW SHARE MODE
 
 RS
 
ROW EXCLUSIVE MODE
 
 RX
 
SHARE MODE
 
 S
SHARE EXCLUSIVE MODE
 
 SRX
EXCLUSIVE MODE
 
 X

遗留问题:SELECT FOR UPDATE属不属于DML

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值