简述Oracle数据库的乐观锁和悲观锁?

Oracle数据库的悲观锁和乐观锁是两种数据锁定机制。

悲观锁(Pessimistic Locking)在数据开始读取的时候就把数据锁定住,其它想插入的数据要等待直到锁的释放。这种锁定数据的方式带来的是性能的降低,因为在多用户并发访问的时候,当对一张表进行频繁操作时,会发现响应效率很低,数据库经常处于一种假死状态。在Oracle中,悲观锁需要利用一条现有的Connection,它分成两种方式,从SQL语句的区别来看,就是一种是select for update,一种是select for updatenowait的形式。

乐观锁(Optimistic Locking)则每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据。乐观锁适用于读多写少的并发场景,因为在这种情况下,冲突的几率比较小。乐观锁的主要实现方式是在数据读取的时候不进行锁定,而是在更新的时候判断在此期间有没有其他用户修改过这个数据。

发表评论

后才能评论