zoukankan      html  css  js  c++  java
  • 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结束后才能执行成功。

  • 相关阅读:
    《人月神话》阅读笔记03
    《人月神话》阅读笔记02
    《人月神话》阅读笔记01
    《构建之法》阅读笔记03
    《构建之法》阅读笔记02
    蚂蚁通信框架实践
    红黑树
    漫画算法:什么是红黑树
    Java中的锁分类与使用
    JAVA CAS原理深度分析
  • 原文地址:https://www.cnblogs.com/lianstyle/p/11118953.html
Copyright © 2011-2022 走看看