《一》隔离级别


一、脏读、幻读、不可重复读

1、脏读:一个事务读到另一个事务未提交的数据

脏读

2、不可重复读

不可重复读

3、幻读

幻读

二、隔离级别

1、Read uncommitted(读未提交):可能出现脏读、不可重复读和幻读。

2、Read committed(读提交):可以避免脏读,但可能出现不可重复读和幻读。

  • 大多数数据库默认级别就是Read committed,比如Sql Server数据库和Oracle数据库。注意:该隔离级别在写数据时只会锁住相应的行。

### 3、Repeatable read(可重复读):可以避免脏读和不可重复读,但可能出现幻读。

  • 事务隔离级别为可重复读时:

    • 查询时默认加的时next-key锁,增删改时加的锁为???????
    • 如果检索条件有索引主键索引或唯一索引时next-key变为行锁,普通索引还是next-key锁
    • 如果检索条件没有索引,变为表锁,更新数据时会锁住整张表表锁。
  • 通过间隙锁:一个间隙被事务加了锁,其他事务是不能在这个间隙插入记录的,这样可以防止幻读。

### 4、Serializable(序列化):可以避免脏读、不可重复读和幻读,但是并发性极低,一般很少使用。

  • 该隔离级别在读写数据时会锁住整张表。

殿下
1 声望0 粉丝