数据库中死锁
MySQL里都是行锁,如下图
死锁产生的必要条件,其实和操作系统里的并发控制类似,都是四个必要条件:互斥、持有等待、不可剥夺、循环等待。
上述两种数据库都无法避免或打破。
不可剥夺可以通过回滚来打破
循环等待也可以通过程序设计检查而避免。
数据库中有两种锁:排他锁(X),共享锁(S)
数据库加锁方式:外部加锁直接通过SQL语句,如果只有select则没有加锁,加了share mode则是共享锁,update则是排他锁
数据库会自动帮我们分析产生死锁的SQL语句,我们只需要分析并解决死锁即可。