SQL事务

2018-08-22  本文已影响0人  yun11yun
  1. 何为事务

    具有逻辑关系的一组操作,组成这个操作的各个逻辑单元,要么全部成功,要么全部失败

  2. 事务属性

    • 原子性

      一组事务,要么成功;要么撤回
      * 一致性
      > 如果事务成功执行,则数据库的状态得到了进行了正确的转变。
      * 隔离性
      > 保证不同的事务相互独立、透明地执行。
      * 持久性
      > 即使出现系统故障,之前成功执行的事务的结果也会持久存在。

  3. 事务控制

    • START TRANSACTION:MySQL开启事务
    • SAVEPOINT:创建回滚点
      SAVEPOINT SAVEPOINT_NAME;
      
    • COMMIT:提交事务
    • ROLLBACK:回滚事务
      ROLLBACK;
      
      // 回滚到保存点
      ROLLBACK TO savepoint_name;
      
    • RELEASE SAVEPOINT:删除回滚点
      RELEASE SAVEPOINT SAVEPOINT_NAME;
      
    • SET TRANSACTION:初始化数据库事务,指定随后的事务的各种特征
      SET TRANSACTION [ READ WRITE | READ ONLY ];
      
  4. 事务并发问题

    • 脏读

      一个事务读到另一个事务未提交的数据
      * 不可重复读
      > 事务A读到事务B update 的数据,导致两次查询的结果不一致
      * 虚读/幻读
      > 一个事务A读到另外一个事务B Insert 的数据,导致两次查询的结果不一致

  5. 事务隔离级别

    • READ UNCOMMITED
    • READ COMMITED:解决脏读的问题
    • REPEATABLE READ:解决脏读和不可重复读的问题
    • SERIALIZABLE:解决所有的事务并发问题
  6. 设置事务隔离级别

    • ORACLE

      SET TRANSACTION ISOLATION LEVEL SERIALIZABLE|READ COMMITTED;
      

      NOTE: ORACLE只有2个事务隔离级别,默认隔离级别是READ COMMITTED

    • MySQL

      //设置事务隔离级别
      SET SESSION TRANSACTION ISOLATION LEVEL 事务隔离级别;
      
      // 查看事务隔离级别
      SELECT @@tx_isolation;
      
上一篇 下一篇

猜你喜欢

热点阅读