事务的特性以及事务的隔离级别

一、事务的四大特性
1、原子性
原子性是只事务所包含的所有操作是不可分割的整体。要么全部成功,要么全部失败。不会部分成功,部分失败。
2、一致性
一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说事务提交前和事务提交后都必须是处于一致性状态。
例如:A账户和B账户的钱总共有10000元,那么两个账户之间无论进行多少次互转,总金额都应该是10000元。
3、隔离性
隔离性是指当多个事务并发访问数据库操作某一个表的时候,每个事务的操作是独立的,不能被其他事务所干扰,多个并发的事务之间相互隔离开来。
需要达到的效果是,对于任意两个事务T1和T2,对于T1而言,T2要么在T1执行之前结束,要么在T1结束之后执行。这样每个事务都感觉不到其他事务的影响。
4、持久性
持久性是指事务一旦被提交了,那么对数据库中的数据的改变是永久性的,即便遇到数据库故障也不会都是提交的事务操作。

二、事务的隔离级别
1、读未提交(Read uncommitted)
隔离级别最低。顾名思义,会读取到其他事务没有提交的数据。会出现脏读,不可重复读,幻读。
2、读提交(Read committed)
隔离级别高于“读未提交”。会出现不可重复读和幻读。是多数数据库的默认级别。
3、可重复读(Repeatable read)
会出现幻读。mysql数据库的默认级别。
4、序列化(Serializable )
这是数据库的最高隔离级别。可以有效避免脏读,不可重复读和幻读,相当于一个事务提交完成以后下一个事务才能执行。这种方式的效率很低,类似于java中的synchronized锁。

三、什么是脏读,不可重复读和幻读?
1、脏读:是指一个事务在执行的时候,读取到了另外一个事务还未提交的数据。
2、不可重复读:是指某一事务在执行时前后两次查询同一条记录,但两次查询的数据不一致的情况。简单来说就是事务T1第一次查询某条记录时,T2还未提交对这条记录的修改,当T1第二次查询这条记录时,T2提交了对这条记录的修改。这种情况就造成了两次查询结果不一致。
3、幻读:在一个事务中查询到了另外一个事务新增的数据。比如说事务T1在执行的时候,用相同的查询条件两次查询,第一次查询到了3条,但是第二次查到了4条。前后读取的数据数量不一致,称为幻读。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值