Code前端首页关于Code前端联系我们

MySQL死锁例程:我们看一个更新不同索引的例子

terry 2年前 (2023-09-26) 阅读数 45 #数据库
CREATE TABLE `t3` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `a` varchar(5) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `b` varchar(5) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),UNIQUE KEY `uk_a` (`a`), KEY `idx_b` (`b`) 
)
复制代码

SQL语句如下

t1
update t3 set b = '' where a = "1";

t2
update t3 set b = '' where b = "2";
复制代码

首先用前面的调试方法看看这里的两条语句加了什么锁

第一条语句(通过唯一索引更新记录)

update t3 set b = '' where a = "1";MySQL 死锁套路:看一例走不同索引更新的例子MySQL 死锁套路:看一例走不同索引更新的例子MySQL 死锁套路:看一例走不同索引更新的例子

排序后添加 3

1 锁定类型 _UK_Axx x3IDX_Bx

2 个语句

更新 t3 set b = '' 其中 b = "2" ;MySQL 死锁套路:看一例走不同索引更新的例子MySQL 死锁套路:看一例走不同索引更新的例子MySQL 死锁套路:看一例走不同索引更新的例子

排序后我添加了 3。订单

序列号索引锁类型
1idx_bX
2PRIMARY
2PRIMARY

ID

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门