0
点赞
收藏
分享

微信扫一扫

75-MySQL(事务)

少_游 2022-04-25 阅读 15
mysqlsql

MySQL事务

MyISAM不支持事务(每一个SQL自动就提交了,不能做转账这种多条SQL组成的业务啊)!
InnoDB支持事务,支持行锁 !
(InnoDB最大的2个特点)

事务的概念

有的业务需要1条以上的SQL语句共同完成,只有这些SQL都成功了才算业务成功了。

类似于银行的转账,商品的入库出库的场景:
在这里插入图片描述
转账业务由2条SQL组成。 没有一部分成功一部分失败这一说。

begin开启事务,如果这2句SQL都成功了,那么commit提交一个事务。

事务的三个状态:

  • 开启事务(begin):所有sql语句执行成功了;
  • 提交事务(commit):提交事务,表示事务生效了;
  • 回滚事务(rollback):数据恢复到事务开始前的状态。

在这里插入图片描述

  • 图中的是捕捉任何类型的异常。
  • 如果其中任意一句SQL由于突然停电,或者系统出错,执行出错了,那么事务就没有提交,事务就回滚,回滚就是数据恢复到事务开始前的状态。

这是存储引擎来保证的(redo log 和undo log保证的)。

mysql的默认引擎是innoDB;
在这里插入图片描述
在这里插入图片描述

  • 默认是自动提交。
  • 改成 0 ,手动提交事务,在代码上进行控制,做业务,业务都成功,提交1个事务,如果业务中间出现失败,就回滚1个事务
    在这里插入图片描述
    所以记住事务的几个基本概念,如下:
  • 事务是一组SQL语句的执行,要么全部成功,要么全部失败,不能出现部分成功,部分失败的结果。保证事务执行的原子操作。
  • 事务的所有SQL语句全部执行成功,才能提交(commit)事务,把结果写回磁盘上。
  • 事务执行过程中,有的SQL出现错误,那么事务必须要回滚(rollback)到最初的状态(事务开始前的状态)
举报

相关推荐

MySQL:事务

Mysql 事务

《MySQL》事务

mysql事务

事务——MySQL

【MySQL】事务

MySQL【事务】

Mysql事务

0 条评论