1. 两阶段索协议
在 InnoDB 事务中,行锁是在需要的时候才加上的,但并不是不需要了就立即释放,需要等到事务结束才释放。
如果你的事务中需要锁多个行,要把最可能造成锁冲突、最可能影响并发度的锁置后
2. 死锁
系统中不同线程之间出现循环资源依赖,线程之间互相等待对方释放锁
处理策略
- 直接进入等待,直到超时,通过参数设置innodb_lock_wait_timeout
- 死锁检测,回滚其中一个事务,让其他事务继续执行,将参数innodb_deadlock_detect 设置为 on
-
怎么解决由热点行更新导致的性能问题呢?在数据库服务端控制并发度,使用数据库中间件或者将修改一行改为修改多行记录,将影院账户改为10条记录的和,每次更新其中一条。
文章出处:https://time.geekbang.org/column/article/70215(极客时间专栏)