共享锁,排他锁,乐观锁,悲观锁

排他锁和共享锁是物理存在的锁:

排他锁:update和select for update,效果:其他事务只能select  不能 select lock in share mode 也不能select for update 和 update

共享锁:select lock in share mode,效果:其他事务只能select 和 select lock in share mode,但不能select for update 和 update

悲观锁和乐观锁是概念性的,有不同的实现方式

悲观锁:每次取数据的时候,都怕被别的事务更改,所以每次获取和更改数据时,都要加锁,防止其他事务更改(for update可以看成悲观锁)

乐观锁:每次取数据的时候,认为别的事务不会更改,但是为了防止别人更改后自己再更改造成数据不一致,在取数据的时候加一个版本号(可以是一个字段),每次更新完之后版本号+1,这样在提交事务更改的时候检查前后版本号是否一致,一致提交,不一致回滚。(MVCC属于乐观锁)

发布了226 篇原创文章 · 获赞 31 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/why444216978/article/details/104288478