7.1 数据库事务与并发

     数据库事务必须具备ACID特征,ACID是Atomic(原子性),Consistency(一致性),Isolatin(隔离性)和 Durability(持久性)的英文缩写。

    原子性:指整个数据事务是不可分割的工作单元,只有事务中所有的操作执行成功,才算是整个事务的成功:事务中任何一个SQL语句执行失败,那么已经执行的sql语句也必须撤销,数据库状态应该退回到执行事务之前的状态、

  一致性:指数据库事务不能破坏关系数据库的完整性以及业务逻辑的一致性,例如,对于银行转账事务,不管成功还是失败,应该保证事务结束后两人总额不变。

   隔离性:指的是在并发环境中,当不同的事务同时操作相同的数据时,每个事务都有各自的完整的数据空间

   持久性:指的是只要事务成功结束,他对数据库做的所做的更新就必须永久的保存下来,即使发生系统的崩溃。重新启动数据库系统后。数据库还能恢复到事务成功结束的状态。

 

                           多个事务并发运行时的并发问题

   对于同时运行的多个事务,当这些事务访问数据库的相同的数据时,如果没有采取必要的隔离机制,就会导致各种并发的问题,这些并发问题可以归纳为以下几类:

1 第一类更新丢失;撤销一个事务时,把其他事务已经提交的更新数据覆盖。

2 脏读: 一个事务读到另一个事务未提交的更新数据

3虚读:一个事务读到令一个事务已提交的新插入的数据

4不可重复读: 一个事务读取到另一个事务已提交的更新数据

5第二类丢失更新L这是不可重复读的特例,一个事务覆盖另一个事务已提交的更新数据

                                     数据库的事务隔离级别

  锁机制能有效的解决各种并发问题,但是他会影响并发性能,并发性能是指数据库系统同时为各种客户提供服务的能力。当一个事务锁定资源时,其他事务必须停下来等待,这就降低了数据库系统同时响应各种客户程序的速度

  数据库系统为用户提供了四种事务隔离级别供用户选择:

Serializable:串行化

repeatable Read 可重复读

read Commited 读已提交

read Uncommitted 读未提交

 

serializable (串行化)

  当数据库系统使用serizlizable级别时,一个事务在执行的过程中完全看不到其他事务对数据缩做的更新,当两个事务同时操作数据库时,如果第一个事务已经在访问该数据,第二个事务职能停下来等待,必须等到第一个事务结束后才能恢复运行

repeatableRead(可重复读)

当数据使用RepeatableRead级别时,一个事务在执行过程中可以看到事务已经提交的新插入的记录,但是不能看到其他事务对已有记录的更新

read Commited(读已经提交数据)

当数据库系统使用Read Commited 隔离数据级别时,一个事务在执行过程中可以看到其他事务已经提交的新插入的数据,而且能看到其他事务对已经提交对已有记录的更新

read uncommitted ,一个事务在执行过程中可以看到其他事务没有提交的新插入的数据,而且能看到其他事务没有提交对已有记录的更新

 

隔离级别                  是否出现第一类丢失更新   是否出现脏读   是否出现虚读 是否出现不可重复读 是否出现第二类更新

serializable                  no                                no                no                 no                           no

repeatable Read      no                                      no            yes               no                                no

read commited        no                                      no                  yes           yes                             yes

read Uncommitted       no                                   yes              yes            yes                               yes

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值