数据库 锁机制

并发控制容易导致活锁和死锁。
加锁主要是防止不可重复和读脏数据以及。

共享锁(S锁)

Share Lock
S锁一般用于表级,事务T对数据对象A加上S锁,则事务T可以读A但是不能修改它,而在T释放S锁之前,其他事务只能对A再加S锁,而不能再加X锁,这就保证了在事务T释放A上的共享锁之前,获取锁的其他事务只能对A读而不能进行其他修改。通常A被读取完毕,S锁立即释放。

排它锁(X锁)

Exclusive Lock
X锁是行级锁,事务T对数据对象A加上X锁,则T对A既可读又可写,此时其他事务不能对A加其他锁。获取锁的其他事务对A既可读又可写。X锁要直到事务结束时才会释放。

更新锁(U锁)

Update lock
一次只有一个事务能获取数据对象A 的U锁,它允许其他事务读取,但其他事务不能再加U锁和X锁,当资源被更新时,U锁升级到X锁,U锁直到事务完成才会被释放。

https://blog.csdn.net/C_J33/article/details/79487941
借鉴了该博客的图。
锁的分类

悲观锁(Pessimistic Lock)

悲观锁则是采用数据库提供的锁机制。这会导致数据库性能的开销大大增加。具有强烈的独占性和排他性。

乐观锁(Optimistic Lock)

乐观锁一般是由程序员实现,一般采用版本号和时间戳的方法。假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让返回错误的信息,乐观锁开销较小。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值