一切都是最好的安排之Transaction

什么是事务

Transaction
一个事务对应一个不可再分单位,一个事物

事务特性(4大特性ACID)

  • 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。
    要么都做,要么都不做
  • 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
    a+b=100,不管如何转账,最终结果a+b还是要100
  • 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
    执行事务a,执行事务b,两个事务并发互相干扰,将两个事务a、b相互隔离
  • 持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
    事务一旦提交成功,数据变更将永久性保存,不受其他影响

隔离性产生的问题

更新丢失
脏读
不可重复读
幻象读(虚读)

设置事务隔离级别

数据库事务的隔离级别有4个,

  1. Read uncommitted(未授权读取、读未提交)
  2. Read committed(授权读取、读提交)
  3. Repeatable read(可重复读取)
  4. Serializable(序列化)

这四个级别可以逐个解决脏读、不可重复读、幻象读这几类问题。级别越高,越能保证数据完整性和一致性,对并发性能也影响大。

MySQL默认隔离级别Repeatable read;大多数数据库的默认级别就是Read committed,比如Sql Server , Oracle。能够避免脏读取,性能较好,相对不可重复度、幻象读、第二类丢失更新,可以通过悲观锁和乐观锁进行操作控制。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值