zoukankan      html  css  js  c++  java
  • MySQL—事务(ACID)

    参考CSDN:https://blog.csdn.net/dengjili/article/details/82468576

    1.事务四大特性

    原子性(Atomicity)
      要么都成功,要么都失败。

    一致性(Consistency)
      事务前后数据的完整性必须保持一致。

    持久性(Durability)

      事务一旦提交侧不可逆,被持久化到数据库中!

    隔离性(Isolation)
      事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。

      每个操作每个事务都要互相隔离。

        隔离所导致的一些问题

          1.脏读:

            指一个事务读取了另外一个事务未提交的数据。

          2.不可重复读:

              在一个事务内读取表中的某一行数据,多次读取结果不同。

            (这个不一定是错误,只是某些场合不对) 

          3.虚读(幻读)

            就是别人事务都已经提交了,但是你的事务里读到的还是提交前的值。
            (一般是行影响,多了一行)

    MySQL---它是默认开启事务提交的!

    2.事务的隔离级别  

      SQL 标准定义了四个隔离级别:

    • READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。
    • READ-COMMITTED(读取已提交): 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。
    • REPEATABLE-READ(可重复读): 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。
    • SERIALIZABLE(可串行化): 最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。
    3.模拟转账案例

     -- 创建表

    CREATE TABLE account(
    id INT(3) NOT NULL auto_increment,
    name VARCHAR(30) NOT NULL,
    money DECIMAL(9,2) NOT NULL,
    PRIMARY KEY(id)
    )ENGINE=INNODB DEFAULT CHARSET=utf8
    
    
    INSERT INTO account(name,money) VALUES('A',2000.00),('B',1000.00)
    
    
    -- 模拟转账:事务
    SET autocommit = 0; -- 关闭自动提交
    START TRANSACTION -- 开启一个事务(一组事务)
    
    
    UPDATE account SET money=money-500 WHERE name = 'A'; -- A减500
    UPDATE account SET money=money+500 WHERE name = 'B'; -- B加500
    
    
    COMMIT; -- 提交事务
    ROLLBACK; -- 回滚
    
    
    SET autocommit = 1; -- 恢复默认自动提交
  • 相关阅读:
    HDU 6143 Killer Names【dp递推】【好题】【思维题】【阅读题】
    HDU 6143 Killer Names【dp递推】【好题】【思维题】【阅读题】
    POJ 3974 Palindrome【manacher】【模板题】【模板】
    POJ 3974 Palindrome【manacher】【模板题】【模板】
    HDU 6127 Hard challenge【计算机几何】【思维题】
    HDU 6127 Hard challenge【计算机几何】【思维题】
    HDU 6129 Just do it【杨辉三角】【思维题】【好题】
    HDU 6129 Just do it【杨辉三角】【思维题】【好题】
    HDU 3037 Saving Beans【Lucas定理】【模板题】【模板】【组合数取余】
    8.Math 对象
  • 原文地址:https://www.cnblogs.com/luckyjcx/p/12296354.html
Copyright © 2011-2022 走看看