Java教程

数据库锁总结

本文主要是介绍数据库锁总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!


共享锁:也称读锁。
排他锁:也称写锁。

锁粒度角度划分:
表级锁:
S锁:共享锁
X锁:排他锁
意向锁:行级锁的锁定同时,会同时在表级进行,读或者写的意向锁。当有表级锁时直接就能判断不能锁定需要等待。
自增锁:自增ID上的锁,分为三种,8.0之前有两个,表级别锁和连续锁(拿到锁可申请连续自增数据),8.0之后进行优化,申请的自增数据可能不连续。
元数据锁(MDL锁):修改表结构

行级锁:
记录锁(S锁:共享锁、X锁:排他锁)
间隙锁(gap locks):避免插入幻影记录。解决幻读。共享锁和排他锁都可以作为间隙锁,如:已有id:1,5,8 select * from a where id = 3 for update;锁定范围:(1,5)之间的id。
如果where id = 10 for update; 则范围就是(8,+无穷大)
临键锁:建于记录锁和间隙锁。
插入意向锁:等待其他锁释放的,插入数据。此插入数据就持有插入意向锁。

锁态度划分:
悲观锁:竞争激烈,直接用悲观锁,for update。适合写多的场景,防止写读冲突,减少乐观锁频繁充实对资源的消耗。
乐观锁:竞争不是很激烈,用版本号或者时间戳进行加锁。适合读比较多的场景。

加锁方式划分:
显式锁:delete,update等加锁操作。for update,lock share in mode;
隐式锁:insert操作等。

这篇关于数据库锁总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!