java,mysql 悲观锁,乐观锁

悲观锁: pessimistic lock,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁。这样别人想拿这个数据就会block直到它拿到锁。sysnchronized类似。 数据库悲观锁使用 for update

select * from sys_role where sysId=#{sysId} for update

乐观锁: optimistic lock, 每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在提交更新的时候会判断以下在此期间别人有没有去更新这个数据。乐观锁适用于读多写少的场景,可以提高吞吐量。

  1. 版本version
  2. timestamp 时间戳

你可能感兴趣的:(锁)