排他锁和共享锁是物理存在的锁:
排他锁: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属于乐观锁)