数据库事务

事务是什么?

   事务是指中一个逻辑工作单元中的一系列操作,这一系列操作要么都成功执行,要么都失败,不执行。一个逻辑单元要成为一个事务,必须满足事务的四个特性(A原子性,C一致性,I隔离性,D持久性),事务是数据库的一个逻辑单元,事务是由DBMS中的事务管理子系统管理。

最简单的例子,银行转账业务,A账户转账给B账户,其中就包含了两个操作:A帐户扣款,B帐户叠加转账金额。

其中,

原子性就是指这两个操作要么都成功,要么都失败(不执行,回滚)。

一致性就是指事务执行前和执行后仍然处于一致状态,仍然满足完整性约束。如上,在这个事务执行前 和 执行后 A帐户和B账户的总金额不变。

隔离性是指事务在并发的时候,一个事务读取数据的时候,该条数据是否被另外一个事务所影响,通过隔离级别来控制。如,A账户给B账户转账的时候,C帐户也在给B帐户转账,这个时候就需要其中一个人转账成功之后,另一个人才能转账,这个时候就需要隔离级别来控制。

持久性是指事务执行之后数据被持久化永久保存下来,即使机器停下来,也不会丢失,对系统的影响是永久的。

隔离级别

 在事务并发的情况下,由于事务间的相互影响,会发生很多问题,比如更新丢失,读到脏数据等,所以在事务并发的时候,我们需要通过隔离级别来控制事务间的影响。

隔离级别有以下几种:

读未提交(Read Uncommitted),如一个事务更新之后还没有提交,其他的事务也可读取更新之后的状态。这种很容易出错,几乎很少使用。

读已提交(Read committed),一个事务更新提交之后,其他的事务才能读取到更新的状态。这是大多数数据库默认级别

可重复读(Repeatable Read),同一个事务两次或多次同样的对数据内容查询,如果得到的结果是一样的,但不保证得到的数据条数是一样的,只要存在读改行数据就禁止写。这是mySQl的默认级别。

串行化(Serializable),事务一个个的执行,一个事务提交之后,另外一个事务才能执行,这样就不能事务并发,完全的把每一个事务隔离开了,这个是最高级别,也最安全,但是执行的效率很低,一般也不会用这个中级别。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值