zoukankan      html  css  js  c++  java
  • 事务

    1.事务定义

    数据库的事务(Transaction)是一种机制、一个操作序列,包含了一组数据库操作命令。
    事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么
    都执行,要么都不执行,因此事务是一个不可分割的工作逻辑单元。
    在数据库系统上执行并发操作时,事务是作为最小的控制单元来使用的,特别适用于多用户同时操
    作的数据库系统。 
    

    例如,航空公司的订票系统、银行、保险公司以及证券交易系统等。

    事务特性

    事务具有 4 个特性
    1.原子性(Atomicity)
    2.一致性(Consistency)
    3. 隔离性(Isolation)
    4. 持久性(Durability)这 4 个特性通常简称为 ACID。 
    

    原子性

    事务是一个完整的操作。事务的各元素是不可分的(原子的)。事务中的所有元素必须作为一个整体提交或
    回滚。如果事务中的任何元素失败,则整个事务将失败。
    以银行转账事务为例,如果该事务提交了,则这两个账户的数据将会更新。如果由于某种原因,事务在成功更
    新这两个账户之前终止了,则不会更新这两个账户的余额,并且会撤销对任何账户余额的修改,事务不能部分
    提交。 
    
    

    一致性

    当事务完成时,数据必须处于一致状态。也就是说,在事务开始之前,数据库中存储的数据处于一致状态。在正
    在进行的事务中. 数据可能处于不一致的状态,如数据可能有部分被修改。然而,当事务成功完成时,数据必须
    再次回到已知的一致状态。通过事务对数据所做的修改不能损坏数据,或者说事务不能使数据存储处于不稳定的
    状态。 
    
    

    以银行转账事务事务为例。在事务开始之前,所有账户余额的总额处于一致状态。在事务进行的过程中,一个账
    户余额减少了,而另一个账户余额尚未修改。因此,所有账户余额的总额处于不一致状态。事务完成以后,账户
    余额的总额再次恢复到一致状态。

    隔离性

    对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事
    务。修改数据的事务可以在另一个使用相同数据的事务开始之前访问这些数据,或者在另一个使用相同数据的事务
    结束之后访问这些数据。
    另外,当事务修改数据时,如果任何其他进程正在同时使用相同的数据,则直到该事务成功提交之后,对数据的修改
    才能生效。
    
    
    
    

    张三和李四之间的转账与王五和赵二之间的转账,永远是相互独立的。

    持久性

    事务的持久性指不管系统是否发生了故障,事务处理的结果都是永久的。
    一个事务成功完成之后,它对数据库所作的改变是永久性的,即使系统出现故障也是如此。也就是说,一旦事务被
    提交,事务对数据所做的任何变动都会被永久地保留在数据库中。
    事务的 ACID 原则保证了一个事务或者成功提交,或者失败回滚,二者必居其一。因此,它对事务的修改具有可恢
    复性。即当事务失败时,它对数据的修改都会恢复到该事务执行前的状态。
    

    事务的隔离级别

    脏读:

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

    在这里插入图片描述

    不可重复读:

    在一个事务内读取表中的某一行数据,多次读取结果不同。(这个不一定是错误,只是某些场合不对)

    页面统计查询值
    这里写图片描述
    点击生成报表的时候,B有人转账进来300(事务已经提交)
    这里写图片描述

    虚读(幻读)

    是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。
    (一般是行影响,多了一行)

    这里写图片描述

  • 相关阅读:
    codeforces #586 ABC~D
    codeforces #585 div2 ABCD
    编译原理实验 NFA子集法构造DFA,DFA的识别 c++11实现
    codeforces #599 div2 ABCD
    codeforces #598 div3 ABCDF
    codeforces #587 div3 ABCDE
    codeforces educational round 73 div2 ABCD
    Mud Puddles ( bfs )
    2019牛客多校第十场B.Coffee Chicken(递归)
    2019牛客多校训练第七场A. String(暴力)
  • 原文地址:https://www.cnblogs.com/xiaxiaopi/p/14372065.html
Copyright © 2011-2022 走看看