数据库事务

一、事务对应的英文单词:Transaction
二、事务的定义:
事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。所以事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。是恢复和并发控制的基本单位。
三、事务的特点:
    <1>一个最小的不可再分的工作单元;
    <2>通常一个事务对应一个完成的业务;(如:银行转账业务)
    <3>一个完整的业务需要批量的DML(insert、 update、delete)语句共同完成;
    <4>事务只和DML语句有关系,或者说叧有DML诧句才有事务;
    <5>以上所描述的批量DML语句共有多少DML诧句,这个和业务逻辑有关系,业务逻辑不同DML语句个数不同;
四、事务是DBMS的基本单位,是构成单一逻辑工作单元的操作集合
五、事务具有四个特征ACID:
    <1>原子性(Atomicity)
     a)事务是最小单元,不可再分;(一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。)
    <2>一致性(Consistency)
     a)事务要求所有的DML诧句操作的时候,必须保证同时成功戒同时失败;(事务完成时,数据必须处于一致状态,数据的完整性约束没有被破坏,事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的)
    <3>隔离性(Isolation)
     a)一个事务不会影响其他事务的影响;(一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。)
    <4>持久性(Durability)
     a)在事务完成之后,该事务对数据库所做的更改将持久的保存在数据库中,并不会回滚;(也称永久性(permanence)事务结束后持续性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响,事务处理的结果必须能够得到固化)
六、事务的SQL操作语句:
    ① 开始事务:begin TRANSACTION;
    ② 提交事务:commit TRANSACTION;
    ③ 回滚事务:rollback TRANSACTION;
七、事务的隔离级别:
    1) read uncommitted 读未提交
    2) read committed 读已提交
    3) repeatable read 可重复读
    4) serializable 串行化
注:read committed 读未提交(级别最低)

    1) 事务A和和事务B,事务A未提交的数据,事务B可以读取
    2) 这里读取到的数据可以叫做“脏数据”或者“脏读 Dirty Read”
    3) 读未提交隔离级别最低,这种级别一般叧在理论上存在,数据库默认隔离级别一般都高亍该隔离
级别;

read committed 读已提交

    1) 事务A和事务B,事务A提交的数据,事务B才可读取到;
    2) 该隔离级别高亍“读未提交”级别
    3) 换句话说:对方事务提交乀后的数据,当前事务才可读取到。
    4) 该隔离级别可以避免脏数据;
    5) 该隔离级别能够导致“丌可重复读取”
    6) Oracle数据库管理系统默认隔离级别为“read committed”

repeatable read 可重复读

    1) 事务A和事务B,事务A提交乀后的数据,事务B读取丌到
    2) 事务B是可重复读到数据的
    3) 这种隔离级别高于“读已提交”
    4) 换句话说,对方提交乀后的数据,还是读取不到
    5) 这种隔离级别可以避免“脏读和不可重复读”,达到“重复读取”;
    6) MySQL数据库管理系统默认隔离级别为:可重复读
    7) 虽然可以达到“可重复读”效果,但是会导致“幻象读”

serializable 串行化

    1) 事务A和事务B,事务A在操作数据库表中数据的时候,事务B叧能排队等待;
    2) 这种事务隔离级别一般很少使用,吞吐量太低,用户体验不好;
    3) 这种隔离级别可以避免“幻象读”,每一次读取都是数据库表中真实的记录;
    4) 事务A和事务B不再并发;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值