事务

作者: Ray_lawq | 来源:发表于2019-09-26 14:54 被阅读0次

    我们先看一个例子:

    例如:转账是生活中常见的操作,比如从A账户转账100元到B账号。站在用户角度而言,这是一个逻辑上的单一操作,然而在数据库系统中,至少会分成两个步骤来完成:

    1. 将A账户的金额减少100元
    2. 将B账户的金额增加100元。

    在这个过程中可能会出现以下问题:

    1. 转账操作的第一步执行成功,A账户上的钱减少了100元,但是第二步执行失败或者未执行便发生系统崩溃,导致B账户并没有相应增加100元。
    2. 转账操作刚完成就发生系统崩溃,系统重启恢复时丢失了崩溃前的转账记录。
    3. 同时又另一个用户转账给B账户,由于同时对B账户进行操作,导致B账户金额出现异常。

    数据库为了解决这类为题引入“事务”。

    定义:

    数据库事务是构成单一逻辑工作单元的操作集合。(就是保证一系列连贯的操作,必须同时成功,有一个失败判定失败)

    事务4大特点

    原子性:事务里边的操作就和原子一样是不可分割的
    一致性:事务执行前后是从一个一致性状态到另一个一致性状态(如转账,完成前后总量不变)
    隔离性:并发执行的事务不会相互影响
    持久性:事务一旦提交,其对数据库的更新就是持久的。任何事务或系统故障都不会导致数据丢失。

    【注】 隔离性有隔离等级,等级不同,隔离效果不同

    MYSQL 事务处理主要有两种方法:

    1. 用 BEGIN, ROLLBACK, COMMIT来实现
      BEGIN 开始一个事务
      ROLLBACK 事务回滚
      COMMIT 事务确认
    2. 直接用 SET 来改变 MySQL 的自动提交模式:
      SET AUTOCOMMIT=0 禁止自动提交
      SET AUTOCOMMIT=1 开启自动提交

    这里引用大神的总结,我这就不献丑。值得学习->事务详解

    相关文章

      网友评论

          本文标题:事务

          本文链接:https://www.haomeiwen.com/subject/vvdjuctx.html