记一个死锁案例
一、表结构
二、案例一
开启两个客户端并使用事务更新同一条数据,使用 set money = money + 12 更新
事务1 | 事务2 |
开启 | |
更新 update sc_order set money = money + 12 where order_id = 1; |
|
开启 | |
更新 update sc_order set money = money + 12 where order_id = 1; |
|
报错:死锁异常 ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction |
三、案例二
开启两个客户端并使用事务更新同一条数据,使用 set money = money + 12 更新
事务1 | 事务2 |
开启 | |
更新 update sc_order set money = money + 12 where order_id = 1; |
|
开启 | |
提交 | |
更新 update sc_order set money = money + 12 where order_id = 1; |
|
提交 | |
成功更新 | 成功更新 |
四、原因分析
对加锁进行分析,比较简单,这里就不分析了