事务处理是传统关系型数据库中至关重要的特性之一,通俗的讲就是当数据库在一个事务内的一组SQL要么全部执行成功要么全部执行失败,不能出现一个事务内有的SQL执行成功,有的执行SQL执行失败。这样才可以保证事务的一致性,典型的例子就是通常大家所有的银行转账系统。
与事务相关的通常有以下几个概念: ACID , CAP , 事物隔离级别下面将先介绍ACID与CAP定义,后面将介绍事务的隔离级别。
- ACID
A:原子性(Atomicity)
整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
C:一致性(Consistency)
在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
I:隔离性(Isolation)
隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。
D:持久性(Durability)
在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
- CAP
C:一致性(Consistnecy)
所有的节点上的数据时刻保持同步
A:可用性(Avaliability )
每个请求都能接受到一个响应,无论响应成功或失败
P:分区容忍性(Partition-tolerance)
系统应该能持续提供服务,即使系统内部有消息丢失(分区)
CAP理论在分布式系统中通常被证明为只能满足其二不可三者兼得。
Comments
comments powered by Disqus