SQL-事务

  • 什么是事务

事务是作为单个逻辑单元执行的一系列操作。 多个操作作为一个整体向系统提交,要么执行、要么都不执行,事务是一个不可分割的工作逻辑单元。这特别适用于多用户同时操作的数据通信系统。例如:订票、银行、保险公司以及证券交易系统等。

  • 如何控制事务

    • 事务开启

      • BEGIN;
        UPDATE USER SET money=money-100 WHERE id=1;
        UPDATE USER SET money=money+100 WHERE id=2;

      • START TRANSACTION;
        UPDATE USER SET money=money-100 WHERE id=1;
        UPDATE USER SET money=money+100 WHERE id=2;

    • 事务提交

      commit

    • 事务回滚

      rollback

    • 检查自动提交设置

      SELECT @@autocommit

  • 事务四大特征

    • 原子性:事务是最小的单位,不可分割
    • 一致性 :事务要求,同一事务中SQL语句,必须同时成功或同时失败
    • 隔离性:事务1和事务2之间具有隔离性
    • 持久性:事务一旦结束(commit,rollback),就不可返回
  • 隔离级别

    • 隔离级别

      • read uncommitted;读未提交的
      • read committed;读已经提交的
      • repeatable read; 可以重复读
      • serializable 串行化
    • 查看系统级别
      SELECT @@global.transaction_isolation;

    • 查看会话级别
      SELECT @@transaction_isolation;

    • 修改系统-隔离级别

      SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;

    • 修改会话-隔离级别

      SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

    • read uncommitted 引起脏读:一个事务读到另一个事务没有提交的数据

    • read committed 引起 不可重复读现象:读取同一个表的数据,发现前后不一致

    • repeatable read 引起幻读:事务a操作和事务b同时操作一张表,事务a提交的数据,也不能被事务b读到,就可能造成幻读。

    • serializable

      SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;
      SELECT @@global.transaction_isolation

      事务A、B先后开启,事务B要等事务A结束后才能执行成功。

posted @ 2019-07-02 10:23  Lianstyle  阅读(206)  评论(0编辑  收藏  举报