事务(Transaction)的简单理解

本文详细介绍了数据库事务的ACID特性,包括原子性、一致性、隔离性和持久性。强调了事务在业务操作中的重要性,以及如何通过SQL的starttransaction和commit来管理事务。同时,讨论了事务的失败情况、保存点的使用以及不同的隔离级别,如可串行化、可重复读、读已提交和读未提交,并指出MySQL的默认隔离级别是可重复读。
摘要由CSDN通过智能技术生成

      这个单词并不一定特指数据库中的事务处理,狭义地理解来说,在业务方那个(开发者)来说,一个不可再分的业务动作,这个动作最终表达为一条或者多条SQL语句

1、事务的4个特性:ACID

Atomic(原子性):业务动作对应的SQL应该是看作一个整体,不可再分的,针对数据的修改只能All or None

Consistency(一致性):业务方来定义的,针对数据整体做的不可变的承诺

Isolation(隔离性):当有多个DBMS的用户,同时针对数据做增删查改时,是否互相保持隔离的特性,最理想的情况下,一个用户在操作数据时,是意识不到其他用户同时也在操作数据的。

Durability(持久性):一旦DBMS通知我们数据修改成功了,则数据必然修改成功了(修改被持久化了)

   注:Consistency(最终目标)需要DBMS和程序员共同付出努力来进行维护的,Atomic和Durability是单用户场景下的关于数据存储和恢复的问题,Isolation是多用户场景下的,属于并发控制的内容

          DBMS承诺,属于DBMS的责任,DBMS承诺支持事务,指的就是支持A、D、I

2、SOL怎么使用事务?

start transaction;告诉DBMS一个事务明确开启了(多条SQL组成的事务),执行属于这个事务的SQL

commit; 提交,明确告诉DBMS一个事务完成了

3、事务的成功 commit(执行成功)与失败

  注:无论成功还是失败,数据的一致性是不能被破坏的

(1)被动失败

      ① 硬件的原因

      ②软件的原因:DBMS本身的原因;程序员的原因

   注:由于没有执行commit,十五期间做的部分修改都会被回滚(rollback)

(2)主动失败

      我们可以主动要求事务失败(数据回滚),不去执行commit,而去执行rollback

4、事务期间可以设置保存点(savepoint)

      有了savepoint之后,可以选择回滚到哪个保存点

5、一次开启的事务,只和一条连接(connection)有关

6、隔离级别:

serializable(可串行性):每个事务,必须排队执行,一次一条事务

snapshot read(快照读):不是标准中存在的隔离级别

repeatable read(可重复读):保证了在一次事务过程中(只要没有提交或者回滚),看到的值是不会变化的(即使有别的事务对这个数据做过修改,并且已经提交了,只是针对表中已有的数据做保护了,没有针对新添加的数据保护,有幻读的副作用

read committed(读已提交):可以看到别的事务已经提交的修改数据,有不可重复读,幻读的副作用

read uncommitted(读未提交):多个同时在执行的事务,可以读取到(看到)其他事务,还处于事务未提交的数据修改(完全没隔离),有脏读,不可重复读,幻读的副作用

 注:Mysql的默认情况下,隔离级别就是可重复读

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薰衣草2333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值