MySQL实战07の行锁

1. 两阶段索协议

在 InnoDB 事务中,行锁是在需要的时候才加上的,但并不是不需要了就立即释放,需要等到事务结束才释放。
如果你的事务中需要锁多个行,要把最可能造成锁冲突、最可能影响并发度的锁置后

2. 死锁

系统中不同线程之间出现循环资源依赖,线程之间互相等待对方释放锁

处理策略

  1. 直接进入等待,直到超时,通过参数设置innodb_lock_wait_timeout
  2. 死锁检测,回滚其中一个事务,让其他事务继续执行,将参数innodb_deadlock_detect 设置为 on
  3. 怎么解决由热点行更新导致的性能问题呢?在数据库服务端控制并发度,使用数据库中间件或者将修改一行改为修改多行记录,将影院账户改为10条记录的和,每次更新其中一条。

文章出处:https://time.geekbang.org/column/article/70215(极客时间专栏)

原文地址:https://www.cnblogs.com/yangjiming/p/11016346.html