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特性,要么都发生,要么都失效。