zoukankan      html  css  js  c++  java
  • 数据库事务

    事务(Transaction)是并发控制的基本单位。

    所谓的事务,它是一个操作序列,这些操作要么都执行要么都不执行,它是一个不可分割的工作单位。

    事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。 

    简单地说,事务是一种机制,用以维护数据库的完整性。

    事务的开始:
    
    BEGIN或START TRANSACTION都是显式开启一个事务;
    
    事务的提交:
    
    COMMIT或COMMIT WORK都是等价的;
    
    事务回滚:
    
    ROLLBACK或ROLLBACK WORK也是等价的;
    事务的开始提交回滚

    事务四个特性(ACID):
    1.原子性(Atomicity):事务中的各个操作要么都做要么都不做
    2.一致性(Consistency):事务必须使数据库从一个一致性状态变换到另一个一致性状态
    3.隔离性(Isolation):一个事务的执行不能被其他事务干扰
    4.永久性(Durability):一个事务一旦提交,它对数据库中数据的改变就应该是永久性


    脏读:一个事务处理过程里读取了另一个未提交事务的数据

    不可重复读:一个事务内多次查询却返回了不同的数据值(强调update)

    幻读:一个事务范围多次查询返回不同的数据值(强调 insert,delete)

    Sring中五种隔离级别:

        TRANSACTION_NONE:不使用事务

        TRANSACTION_READ_UNCOMMITTED:允许脏读

        TRANSACTION_READ_COMMITTED:防止脏读,最常用的隔离级别,大多数数据库默认的隔离级别

        TRANSACTION_REPEATABLE_READ:防止脏读和不可重复读

        TRANSACTION_SERIALIZABLE:防止脏读,不可重复读,幻读,效率低

    回滚:回滚通常是由数据库日志管理的,回滚时反向执行从事务开始时的所以日志。其他运行的事务可能依赖于被回滚的事务的结果,在这种情况下,这些依赖的事务也会被回滚

  • 相关阅读:
    [LeetCode] Output Contest Matches 输出比赛匹配对
    [LeetCode] 527. Word Abbreviation 单词缩写
    [LeetCode] Permutation in String 字符串中的全排列
    [LeetCode] 560. Subarray Sum Equals K 子数组和为K
    [LeetCode] Reshape the Matrix 重塑矩阵
    [LeetCode] 536. Construct Binary Tree from String 从字符串创建二叉树
    [LeetCode] IPO 上市
    [LeetCode] Binary Tree Tilt 二叉树的坡度
    [LeetCode] Array Partition I 数组分割之一
    [LeetCode] Zuma Game 祖玛游戏
  • 原文地址:https://www.cnblogs.com/liuxgcn/p/11137586.html
Copyright © 2011-2022 走看看