【发布时间】:2020-05-08 11:21:06
【问题描述】:
Update XyzTable set state ='second' where pgmNumber = 'prog123' and state = 'first'
状态列是只有 4 个值的低基数列。 state 和 pgmNumber 列都有单独的索引。
每个 pgmNumber 有一行。
即使上述查询与不同的 pgmNumber 并发运行,也会发生死锁。
解决问题的最佳方法是什么
【问题讨论】:
-
您要更新的列不在 where 子句中 .. 所以 .. 相关索引不参与更新操作(但只是在行的 fecth 期间).. 可能你有一些在您尝试更新时插入或更新表的其他用户.. .. 无论如何,请确保您已自动提交 ON 或在每次更新后快速提交,以便队列更新不会被未提交的查询阻塞
-
不,它在哪里
标签: mysql indexing innodb deadlock database-administration