SQL事务

事务的特性:ACID
1. A,也就是原子性(Atomicity)。原子的概念就是不可分割,你可以把它理解为组成物质的基本单位,也是我们进行数据处理操作的基本单位。即所有操作要么同时成功,要么同时失败,不可再分割。

2. C,就是一致性(Consistency)。一致性指的就是数据库在进行事务操作后,最终结果是一致的 。也就是说当事务提交后,或者当事务发生回滚后,数据库的完整性约束不能被破坏。

3. I,就是隔离性(Isolation)。它指的是每个事务都是彼此独立的,不会受到其他事务的执行影响。也就是说一个事务在提交之前,对其他事务都是不可见的。

4. D,指的是持久性(Durability)。事务提交之后对数据的修改是持久性的,即使在系统出故障的情况下,比如系统崩溃或者存储介质发生故障,数据的修改依然是有效的。因为当事务完成,数据库的日志就会被更新,这时可以通过日志,让系统恢复到最后一次成功的更新状态。

在这四个特性中,原子性是基础,隔离性是手段,一致性是约束条件,而持久性是我们的目的。

 事务并发操作时可能带来以下的一些问题:

  • 脏读:一个事务在读取操作时,将其他事务未提交的数据读取到了

  • 丢失更新:撤消一个事务时,把其它事务提交的更新的数据覆盖了

  • 不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致。

  • 幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读

隔离级别脏读不可重复读幻读第一类丢失更新第二类丢失更新
读未提交(read-uncommitted)允许允许允许不允许允许
读已提交(read commited)不允许允许允许不允许允许
可重复读(repeatable read)不允许不允许允许不允许不允许
可串行化(serializable)不允许不允许不允许不允许不允许

第 1 类丢失更新:事务 A 撤销时,把已经提交的事务 B 的更新数据覆盖了。

第 2 类丢失更新:事务 A 覆盖事务 B 已经提交的数据,造成事务 B 所做的操作丢失。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值