本文基于MySQL的数据库引擎InnoDB,通过本文了解:
1. 死锁。
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象。以下是一些示例。
更新时互相等待
死锁报错
SELECT ... FOR UPDATE 排它锁
死锁报错
依赖索引列删除,同时插入数据
数据表内容:
索引设置:
死锁报错
原因:当加入非主键索引后,两个事务都拿到了相同区间(当前最大-无穷大)的锁,所以会产生死锁。
最后
合理的设计业务逻辑,合理的设计事务大小,合理的使用索引。
领取专属 10元无门槛券
私享最新 技术干货