MySQL Transaction(事务)学习笔记

一、资源入口

二、词汇表中关于Transaction的描述

  1. Transaction:是最小的工作单元(atomic units of work),可以被提交(committed)或者回滚(rolled back)。当一个事务对数据库做出多个改变/操作的时候可能发生两种状况:①、当这个事务被提交(commit)之后,这个事务对数据库所做的所有操作都成功了;②、事务被提交(commit)之后,当事务中多个操作/改变因为有某一个因为出错或者别的什么原因不能完成的时候这个事务(所有的操作/改变)不管是否已经完成了一部分,都会发生回滚(rolled backed)使数据库恢复到commit之前的状态。
  2. 事务,由 InnoDB实现,有一些属性,这些属性被统称为:(按首字母缩写)ACID具体包括:
    • atomicity(原子性)
      • 在SQL上下文中,Transaction是一个工作单元,Transaction执行commit之后:要么操作成功(Commited)数据库发生变化,要么回滚(Rall back)数据库不发生变化,工作单元是不可分割的。
      • 组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。换句话说,事务是不可分割的最小单元。比如:银行转帐过程中,必须同时从一个帐户减去转帐金额,并加到另一个帐户中,只改变一个帐户是不合理的。
    • consistency(一致性)
      • 事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
      • 在事务处理执行前后,MySQL数据库是一致的。也就是说,事务应该正确的转换系统状态。比如:银行转帐过程中,要么转帐金额从一个帐户转入另一个帐户(在不考虑转账费用的情况下,转账方减少的金额与收账方的增加的金额应该是相等),要么两个帐户都不变,没有其他的情况。
    • isolation(隔离性)
      • 一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
    • durability(持久性)
      • 持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

三、对Transaction的控制关键字

  1. START TRANSACTION or BEGIN start a new transaction.
  2. COMMIT commits the current transaction, making its changes permanent.
  3. ROLLBACK rolls back the current transaction, canceling its changes.
  4. SET autocommit disables or enables the default autocommit mode for the current session.
    • 设置自动commit,禁止或启用当前回话的自动提交模式。
    • This mode is not recommended for working with InnoDB tables with transactions that span several statements.
      <
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL事务是一组关联的SQL操作,它们被看作是一个整体,要么全部执行成功,要么全部回滚。事务具有四个ACID属性:原子性、一致性、隔离性和持久性。 首先,原子性意味着事务中的所有操作要么全部成功执行,要么全部回滚。如果事务中的一个操作发生错误,会导致整个事务回滚到之前的状态。 其次,一致性表示事务执行完毕后,数据库将会进入一个有效的状态。在事务开始之前和结束之后,数据库的完整性约束必须得到保持,确保数据的正确性。 隔离性是指每个事务的操作在执行过程中是相互隔离的,不会互相干扰。事务并发执行时可能会出现的问题包括脏读、不可重复读和幻读。为了解决这些问题,数据库系统提供了四个隔离级别:未提交读取、已提交读取、可重复读取和串行化。 最后,持久性是指一旦事务被提交,对数据库的修改将会永久保存,即使在系统故障的情况下也是如此。数据库系统通过将事务的日志记录到磁盘上来实现持久性。 在MySQL中,可以使用START TRANSACTION语句来开始一个事务,COMMIT语句来提交一个事务,ROLLBACK语句来回滚一个事务。此外,可以使用事务控制语句来设置隔离级别,如SET TRANSACTION ISOLATION LEVEL。要保证事务的正确性和性能,还应注意事务的边界,避免事务嵌套过深。 深入学习MySQL事务需要理解事务的四个ACID属性以及MySQL事务控制语句。此外,还需要了解事务的隔离级别,以便在并发执行的情况下避免数据不一致的问题。掌握MySQL事务的概念和操作方法,可以保证数据库操作的一致性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值