MySQL update 执行计划使用 index_merge 导致死锁

MySQL死锁的原因有很多,总的来说,还是因为加锁的顺序不一致,下面来看一个index_merge导致的死锁。

死锁案例:

  • MySQL版本:5.7.19
  • 隔离级别:提交读(RC)

先看表结构,如下:

CREATE TABLE `t` (   `id` bigint(20) NOT NULL AUTO_INCREMENT,   `c1` varchar(50) DEFAULT NULL,   `c2` varchar(50) DEFAULT NULL,   `ts` datetime DEFAULT NULL,   PRIMARY KEY (`id`),   KEY `idx_c1` (`c1`),   KEY `idx_c2` (`c2`),   KEY `idx_ts` (`ts`) ) ENGINE=InnoDB AUTO_INCREMENT=3279 DEFAULT CHARSET=utf8mb4