mysql 当 autocommit=1 并且所有 sql 对一行 CRUD 足够简单时会发生死锁吗?

Will mysql deadlock happen when autocommit=1 and all sql is simple enough for just CRUD one row?

我的数据库是mysql5.7,innodb,隔离级别是READ COMMITTED。 我怕死锁,所以我保持mysql sql语句简单,只有:

每个sql只有一个上面的语句。例如: 一个连接 exec insert into ... where ...; 一次,永远不会 exec multi statement insert ... where ...; update ... where ...; where 语句具有唯一索引约束以确保只操作除select 之外的一行。 只有 select 操作会涉及多行。 我有 64 个或更多 mysql 个连接,并且我将 mysql 操作分开以确保每个连接操作不同的行。 使用autocommit=1配置,会不会发生死锁?如果死锁概率不为零,进入死锁的场景是什么?为什么?我需要帮助。谢谢。

如果您的更新将使用多行操作,或者您没有合适的索引,并且如果您一次对同一行执行多个操作,那么很可能会出现死锁。

如果您看到,请使用以下命令检查语句是否存在死锁。

SHOW ENGINE=InnoDB STATUS;