zoukankan      html  css  js  c++  java
  • MySQL事物系列:1:事物简介

    1:事物是一组SQL的集合,要么都执行,要么都不执行。有ACID4个特性,即:原子性、一致性、隔离性、持久性。

    A(Atomicity)原子性:整个事物是不可分割的工作单位。

    C(consistency)一致性:是指事物将数据库从一种状态变为另外一种状态。在事物之前和事物之后,数据库的完整性约束没有被破坏。

    I(isolation)隔离性:隔离性的其他称呼:并发控制(concurrency control)、可串行、锁。即:该事物提交之前对其他事物不可见。

    D(durability)持久性:事物一旦提交,其结果就是永久性的,及时发生宕机等故障,数据库也能将数据恢复。

    特殊:MySQL的NDB Cluster引擎来说,虽然其支持事物,但是不能满足D的要求;Oracle的事物隔离级别是READ COMMITTED,不满足I的要求,即不满足隔离性。

    InnoDB的存储引擎默认是READ REPEATABLE的事物隔离级别。

    2:事物的分类

    扁平事物

    带有保存点的扁平事物

    链事物

    嵌套事物

    分布式事物

    3:扁平事物是事物模型中最简单的一种。从BEGIN WORK开始,到COMMIT WORK或者ROLLBACK WORK 结束。

    扁平事物的3中不同的结果:

    扁平事物的缺点:一旦设计的操作比较多,事物较大,如需求回滚某一小部分则花费的代价较大。由此,引出了带有保存点的扁平事物。

    4:带有保存点的的扁平事物

    该事物允许事物执行过程中回滚到同一事物中较早的一个状态。

    5:链式事物

    6:嵌套事物

    7:分布式事物

    通常在分布式环境中运行的扁平事物,因此需要根据数据所在位置访问网络中的不同节点。

    例如:用在在ATM进行银行转账操作。从招商转账到工商。

    ATM可以视为节点A;发出转账申请

    招商后台数据库可以视为节点B;扣款

    工商后台数据库可以视为节点C;增款

    A节点收到同时完成或者失败。

    这里需要用到分布式事物,因为A节点不能通过调用一台数据库完成任务,访问网络中两个节点的数据库,在每个节点的数据库执行的事物操作又都是扁平事物。对于分布式事物,同样满足ACID特性,要么都发生,要么都失效。

  • 相关阅读:
    Linux tcpdump命令详解
    移动开发网站收集
    Struts+2权威指南基于WebWork核心的MVC开发源码下载
    Eclipse+php插件+Xdebug搭建PHP完美开发/调试环境指南
    java相对目录和绝对目录解析
    python学习网站搜集
    window下开发iphone程序环境搭建iphone tool chain
    Windows下编译objectiveC
    java class路径获取
    完全优化MySQL数据库性能的八个方法
  • 原文地址:https://www.cnblogs.com/xiaoit/p/4552249.html
Copyright © 2011-2022 走看看