数据库死锁
死锁是指两个或多个事务在同一个资源上相互占用,并请求锁定对方占用的资源,从而导致恶性循环的现象
示例
先用一个示例来演示一下数据库死锁的情况。本示例基于 MySQL 的 InnoDB 存储引擎。
表结构
我们先建一个 wallet 表,表结构如下
1 | mysql> DESC wallet; |
开启事务 A,并修改 id 为 1 的记录
1 | mysql> START TRANSACTION; |
开启事务 B,并修改 id 为 2 的记录
1 | mysql> START TRANSACTION; |