美文网首页
MySQL——事务

MySQL——事务

作者: 我不懂我不懂a | 来源:发表于2018-08-14 07:36 被阅读0次

    事务是一组原子性的SQL查询,如果数据库引擎能够成功的执行该组查询,则执行该组查询,如果其中任何一条语句因为崩溃或其它原因无法执行,那么所有的语句都不会执行。

    相关SQL命令

    • 开始事务
      START TRANSACTION;
    • 提交事务
      COMMIT;
    • 回滚事务
      ROLLBACK;
    • 查看当前事务隔离级别
      select @@tx_isolation;
    • 修改当前隔离级别
      SET session TRANSACTION ISOLATION LEVEL (隔离级别);

    ACID

    原子性(atomicity),一致性(consistency),隔离性(isolation)和持久性(durability)。

    ACID是一个良好的事务需要具备的标准。
    原子性:一个事务被看做不可分割的工作单元,要么全部提交,要么失败回滚。
    一致性:
    隔离性:一个事务的修改在未提交前对其它事务不可见。
    持久性:事务所做的修改一旦提交就会保存到数据库中。

    隔离级别

    由ACID原则我们知道,一个事务的修改在未提交前对其它事务不可见。

    1. 其它事务无法“看见”自己对数据的修改。
    2. 自己只能“看见”事务开始时已经提交的事务所做的修改,执行事务中其它事务提交的修改看不见。
    隔离级别为read uncommitted出现脏读和不可重复读

    如图,
    tjc的值(num)为500
    事务A(左)首先将tjc的值-50(步骤1)
    事务B(右)查看tjc,值为450(此为脏读)
    事务A回滚
    事务B查看tjc,值为500(此为不可重复读)

    脏读为在事务B中读取了事务A未提交的修改,如果事务A回滚,则B有可能执行得到错误的结果。
    不可重复读是在同一事务中,两次执行同样的查询得到的结果不一样,如步骤2,4。

    相关文章

      网友评论

          本文标题:MySQL——事务

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