MySQL-死锁

本文基于MySQL的数据库引擎InnoDB,通过本文了解:

1. 死锁。

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象。以下是一些示例。

更新时互相等待

死锁报错

SELECT ... FOR UPDATE 排它锁

死锁报错

依赖索引列删除,同时插入数据

数据表内容:

索引设置:

死锁报错

原因:当加入非主键索引后,两个事务都拿到了相同区间(当前最大-无穷大)的锁,所以会产生死锁。

最后

合理的设计业务逻辑,合理的设计事务大小,合理的使用索引。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181202G0ZXEH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券