Mysql事务

MySQL事务【详解-最新的总结】_悬浮海的博客-CSDN博客_mysql事务详解

事务:

  • 对数据库的一批操作,这些操作要么全都执行,要么全不执行,不存在部分执行的情况。
  • 在同一个事务当中,所有的SQL语句都成功执行时,整个事务成功,有一个SQL语句执行失败,整个事务都执行失败。
  • 一个事务可能只有一条sql,也可能有多条sql。

事务的特性(ACID):

  • 原子性(Atomicity):一个事务内所有的sql执行都当做一个整体,这些sql操作要么全部成功,要么全部失败。
  • 一致性(Consistency): 一个事务使得数据库从一个一致性状态变换到另一个一致性状态。从业务逻辑上讲,就是最终结果是对的,与预期结果相一致。比如A给B转钱,不可能A的钱少了,B的钱没增加
  • 隔离性(Isolation): 一个事务在执行时,不会对另一个事务的执行产生影响,互不干扰。
  • 一致性(Durability): 一个事务一旦提交,他对数据库的改变是永久的。

dee882a181514724986d87b9f2d3ac88.png

事务提交:

1、隐藏事务:mysql中默认是隐藏事务,执行insert,update,delete是都是自动提交,回滚。

2、显示事务:

通过start transaction 命令开启,commit | rollback 结束

可以用savepoint POINT 保存回滚点, 然后rollback POINT 回滚到指定的地方

事务的隔离级别(由低到高):

读未提交(READ-UNCOMMITTED) :其他事务可以读取到本事务未提交的数据

读已提交(READ-COMMITTED): 其他事务只能可以读取到本事务已经提交的数据

可重复读(REPEATABLE-READ):本事务内,无论执行多少次查询sql(同一条),查询出来的结果都是一样

串行化(SERIALIZABLE): 所有事务按顺序执行(读写,写读,写写 操作均加了锁)9779aa54ce5c4df59f16c87ce3a978b8.png

以下情况均是同个表的

脏读:

A 事务在执行时,B事务往修改一条数据,然后回滚,在B回滚前,A已经读取到了B修改后的数据,此时该数据就是脏数据,出现此情况是因为读取到了B事务未提交的数据

不可重复读:

A事务在读取某一批数据后,B对其中某些数据作了修改(此时B未提交),A执行同样的sql和之前的结果一样,当B提交了之后,A再执行同样的sql,但是结果和之前不一样。

幻读:

A事务在读取某一批数据,B事务插入了一条新数据并提交,此时A也想插入相同的数据,结果插入失败,然后也查询不到该数据。

幻读和不可重复读,理论上幻读应该算是不可重复读的一种,只是不可重复读对应的是修改,而幻读对应的是新增和删除。0f8eb0dca2d64bb581415c616341b44a.png

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值