咸鱼日记之Java Web开发

数据库-死锁分析与解决

2018-08-16  本文已影响0人  冰与河豚鱼

什么是死锁?
死锁是两个及两个以上的事务在执行过程中,因争夺锁资源而造成的一种互相等待的现象。

死锁产生的必要条件?

MySQL中的锁
排他锁(X):跟任何锁都是冲突的,如果一个事务加了排他锁,不管其他事物加任何锁,都必须要等待这个事务
共享锁(S):多个事务可以共享一把锁,多个锁可以兼容

加锁方式

SQL加锁分析
update user set account = 0 where id = 1 >>>X锁
select UserName from user where id = 1 in share mode >>>S锁

分析死锁的常用办法
捕获死锁的sql语句:show engine innodb status

上一篇下一篇

猜你喜欢

热点阅读