数据库锁机制

前言

整理下java中锁这个机制

正文

乐观锁

获取数据的时候不加锁;大多数是基于数据版本记录机制实现的,假设一开始版本号是1,事务A先获取版本号1,再操作后,版本号增加为2,满足 提交版本号大于当前版本号,数据更改,事务B先获取版本号1,再操作增加版本号为2,A执行后版本号为2,B执行后版本后没有满足 提交版本号大于当前版本号 ,因此B事务不执行。

悲观锁

每次拿数据的时候都认为别人会修改,每次拿数据的时候都会上所,然后别人取不到。这样悲观锁就消耗了较多的资源。

共享锁

共享锁又称读锁,多个不同的事务,对同一个资源共享一个锁,只能读不能修改;

排它锁

排它锁又称写锁,对于多个不同的事务,对同一资源只能有一把锁。对一行数据,一个事务对这个数据加了排它锁后,其他事务就不能再在其上加其他锁;

注意:

共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改,排他锁指的是一个事务在一行数据加上排他锁后,其他事务不能再在其上加其他的锁,排他锁就是不能与其他所并存,如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁和排他锁,但是获取排他锁的事务是可以对数据就行读取和修改。

-------------本文结束感谢您的阅读-------------