MySQL事务处理中的常见死锁问题示例

原创 ╰半橙微兮° 2025-01-21 01:12 46阅读 0赞

在MySQL的事务处理中,死锁是一个常见的问题。简单来说,当两个或更多的事务在执行过程中,因各自在等待资源(如锁)而造成的一种相互等待的现象,就会发生死锁。

以下是一个简单的示例:

  1. -- 事务A
  2. START TRANSACTION;
  3. SELECT * FROM table1 WHERE id = 1 FOR UPDATE; -- A等待锁
  4. -- 事务B
  5. START TRANSACTION;
  6. SELECT * FROM table1 WHERE id = 2 FOR UPDATE; -- B等待锁
  7. -- 遇到死锁,两个事务都无法继续
  8. ROLLBACK; -- A回滚,释放资源
  9. ROLLBACK; -- B回滚,释放资源

在这个例子中,如果事务A先获取了锁(id为1),然后事务B尝试获取同一行的锁。由于事务A在等待B结束,而事务B也在等待A结束,这就形成了死锁。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,46人围观)

还没有评论,来说两句吧...

相关阅读