行锁模式以及加锁方法:

共享锁:X锁

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

lock in share mode:共享锁(x锁)

开启两个事务,set autocommit=0的含义是设置当前session禁止自动提交,需要显示commit才可以提交。详见:https://www.cnblogs.com/langtianya/p/4777662.html

表结构(自己去建表啊...):

Mysql InnoDB锁 随笔 第1张

 

首先对sessionA添加lock in share mod,

Mysql InnoDB锁 随笔 第2张

这时共享锁就已经添加上了,sessionB仍然可以查询记录并且可以添加lock in share mode

Mysql InnoDB锁 随笔 第3张

 SessionA对当前Session进行update修改数据时就会进入死锁状态(看当前语句已经没有反应了并且右下角的查询时间在一直增加)

Mysql InnoDB锁 随笔 第4张

在SessionB中对锁住的这行记录进行修改时就可以解除死锁状态,SessionB中输出DeadlockFound....

Mysql InnoDB锁 随笔 第5张

此时SessionA就获得锁可进行更新操作了。。。,再次执行SessionA中的update语句发现可以进行更新了

Mysql InnoDB锁 随笔 第6张

最后SessionA进行commit提交就会发现数据库已经成功修改了

 Mysql InnoDB锁 随笔 第7张

 

 对事务A执行update

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄