这其实是个小技巧,面试的时候偶尔会问到
大概是这样,
事务1,要操作 A B C 这三条记录
事务2 要操作 C A D 这三条记录
业务上要求,记录要被锁住.
这里自然要处理防死锁的问题
预防的方法也简单: 顺序加锁.
也就是说,任何情况下,加锁的顺序是固定的
我们以可依据主键值来做加锁的顺序
事务1 锁记录的顺序 A B C
事务2 锁记录的顺序 A C D
这样就避免了死锁.
一个很简单的技巧,
但背后是程序员们试错而得到的经验.
这其实是个小技巧,面试的时候偶尔会问到
大概是这样,
事务1,要操作 A B C 这三条记录
事务2 要操作 C A D 这三条记录
业务上要求,记录要被锁住.
这里自然要处理防死锁的问题
预防的方法也简单: 顺序加锁.
也就是说,任何情况下,加锁的顺序是固定的
我们以可依据主键值来做加锁的顺序
事务1 锁记录的顺序 A B C
事务2 锁记录的顺序 A C D
这样就避免了死锁.
一个很简单的技巧,
但背后是程序员们试错而得到的经验.