mysql共享锁与独占锁简单介绍(一)

共享锁与独占锁简单介绍

共享锁:Shared Locks,简称S锁,可以多个事务共同持有,获得共享锁的事务只能读数据,不能修改数据。

假如事务1⾸先获取了⼀条记录的S锁,如果事务2想要获取这条记录的S锁,那么事务T2也能获得该锁,事务1和2在该记录上同时持有S锁。

加锁方式:

SELECT … LOCK IN SHARE MODE;
普通的SELECT语句后边加LOCK IN SHARE MODE
当事务执⾏了该语句,它会为读取到的记录加S锁

独占锁:Exclusive Locks,简称X锁。只能被一个事务获取,获得X锁的事务即能读数据又能修改数据。

如果事务1⾸先获取了⼀条记录的X锁之后,那么不管事务2接着想获取该记录的S锁还是X锁都会被阻塞,直到事务1提交。如果事务1获取到S锁,事务2想要获取该记录X锁,此操作会被阻塞,直到事务1提交后才能获取。

加锁方式:

SELECT … FOR UPDATE;
普通的SELECT语句后边加FOR UPDATE

总结:S锁和S锁可以共有的,S锁和X锁是只能存在一个,X锁和X锁也只能存在一个。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页