本文主要是介绍面试——数据库中的锁升级(Lock Escalation)机制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
假设执行下面的sql语句
update tb_user set age = age + 1;
以MySQL为例,按照两阶段锁协议,会先给tb_user加上表意向锁,然后对tb_user的所有行加上行锁,但是当tb_user数据量非常多的时候,频繁的获取行锁会影响性能,所以会将表意向锁升级为表锁,后续访问的时候不需要再加锁,这样导致的结果是并发性能降低,因为其他线程访问该表会被阻塞。
因此得出建议:操作表的时候尽量带仨很where与limit条件,分批去操作数据,尽量防止全表扫描
这篇关于面试——数据库中的锁升级(Lock Escalation)机制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!