• 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结束后才能执行成功。

  • 相关阅读:
    【模板整合计划】高阶数据结构
    【模板整合计划】高阶数据结构—线段树
    主席树【权值线段树】(转)
    Flask系列(二) 模板 templates
    用java实现Shazam 译文
    [转] 研究云计算与海量数据处理方向建议看的论文列表
    程序员应知 如何分析海量数据
    大数据技术大会
    android监控网络状态
    HP(惠普)大中华区总裁孙振耀退休感言
  • 原文地址:https://www.cnblogs.com/lianstyle/p/11118953.html
Copyright © 2020-2023  润新知