数据库事务隔离级别

来源:互联网 发布:济南市 优化政务服务 编辑:程序博客网 时间:2024/06/10 18:12

数据库并发访问

当多个事务同时对数据库进行操作时,就会产生一些并发现象,按严重程度由高到低列举如下:
(假设有T1和T2两个数据库事务)

  1. 丢失更新:
    当T1和T2同时对一份数据进行更新的时候,T1先执行了更新但未提交,此时T2又进行了更新,然后T1执行了提交,T2执行提交。此时T1所做的所有操作均已丢失。

  2. 脏读:
    T1更新了一条数据但未提交,T2对这条数据执行了查询,此时T2可以看到T1未提交的更新。但此时T1突然回滚了,所有更新都失效,那么T2获取的就全部都是脏数据(不存在的数据)。

  3. 不可重复读:
    T1对某条件范围内的数据执行查询,T2此时对同样条件范围的数据执行了更新操作,此时T1再次执行相同的查询,那么由于T2的操作导致T1看到的数据与上一次出现了不同。T1无法在同一事务中查看同一份数据(允许更新)。

  4. 幻象读:
    T1对某条件范围内的数据执行查询,T2此时对同样条件范围的数据执行了插入操作,此时T1再次执行相同的查询,那么由于T2的操作导致T1看到的数据比上一次多出了一条。T1无法在同一事务中查看同一份数
    据(允许插入)。



数据库的事务隔离级别

  1. 读取未提交
    不允许:丢失更新
    允许:脏读、不可重复读、幻象读
  2. 读取已提交
    不允许:丢失更新、脏读
    允许:不可重复读、幻象读

  3. 可重复读:
    不允许:丢失更新、脏读、不可重复读
    允许:幻象读

  4. 串行化:
    不允许:丢失更新、脏读、不可重复读、幻象读
    允许:(串行化是最高事务隔离级别,强制所有的事务串行执行。)

1 0
原创粉丝点击