行锁
MySQL的行锁由各自的引擎自己实现
两阶段锁协议:
在InnoDB中行锁是需要才加上的,并且需要等到事务commit后才会释放
事务需要锁住多个行,可以把最有可能造成锁冲突的语句放在后面(还是有可能产生死锁)
死锁解决策略:
直接进入等待,设置等待超时时间 innodb_lock_wait_timeout来设置 默认50s
发起死锁检测,如果出现死锁,回滚数据 参数innodb_deadlock_detect设置是否开启死锁检测
减少死锁:
如果出现热点行更新出来的性能问题:
确保不会发生死锁 -》 关掉死锁检测
控制并发度