发布时间:2017-05-31 13:59:07 文章来源:互联网
微博 微信 QQ空间
    事务(Transaction)及其ACID属性
 
    事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性:
 
    原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。
 
    一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确的。
 
    隔离性(Isoation):数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。这意味着事务处理过程中的中间状态对外部是不可见的,反之亦然。
 
    持久性(Durabe):事务完成之后,它对于数据的修改是永久性的,即使出现系统故障也能够保持。
 
    典型场景:银行转账业务
 
    例如:李雷账户中有500块钱,韩梅梅账户有200块钱,李雷要从自己的账户中转100块钱给韩梅梅,转账(事务)成功执行完成后应该是李雷账户减100变为400,韩梅梅账户加100变为300,不能出现其他情况,即在事务开始和结束时数据都必须保持一致状态(一致性),事务结束时所有的数据及结构都必须是正确的。并且同样的转账操作(同一流水,即一次转账操作)无论执行多少次结果都相同(幂等性)。
 
    电商场景:流量充值业务
 
    再说我们做的一个项目:中国移动-流量充值能力中心,核心业务流程为:
 
    用户进入流量充值商品购买页面,选择流量商品;
 
    购买流量充值商品,有库存限制则判断库存,生成流量购买订单;
 
    选择对应的支付方式(和包、银联、支付宝、微信)进行支付操作;
 
    支付成功后,近实时流量到账即可使用流量商品;

另一视角

换一换