事务ACID区别【转】

标签: acid | 发表时间:2014-02-11 21:55 | 作者:huangcangbai
出处:http://www.iteye.com

转自:http://blog.sina.com.cn/s/blog_44c594a70101rsgj.html

1,最容易困惑的是原子性和一致性,先谈这俩:
原子性:事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。
一致性: 事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。这种特性称为事务的一致性。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。
 

    有朋友会问,那我保证了原子性,不就可以保证一致了么?这里的关键区别在于,事务的操作边界定义。对于一直事务里有哪些操作,这个是自定义的,而一致性是 针对业务逻辑本身而言的。比如你定义一个事务,里面的操作是A,B,C三步,系统原子性能保证的是这三步要么都执行,要么都不执行,不可拆分。但是有可能 你这三部破坏了数据的一致性,比如你定义了从A账户划拨200块给B账户。如果你的事务里只包含从A账户扣款,而不包含B账户加钱。那么系统保证原子性 后,能保证要么从A账户都扣款成功,要么都不成功,不会出现扣了一半款之类的异常情况。但是没办法保证B账户加钱了。所以A账户扣款,B账号加钱,这是一 个连续的动作,业务逻辑上要保证一致性,所以必须把两个步骤放在一个事务里,这样才能保证一致性。
    换而言之,原子性是系统能够提供的功能,而一致性是根据业务逻辑,有用户自定义事务的边界来保证的。两者缺一不可。

2,隔离性
    其实这里还有一个隐含的点,就是可见性。注意区分两者的关系及隔离和可见的等级,这个是很好理解的。
3,持久性
    持久性也是有级别的,不是说所有数据库都能保证100%当事务提交后,就一定不会丢了。也是比较好理解,各个数据库实现不同,持久性的保证程度也不同。


已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [acid] 推荐:

事务ACID区别【转】

- - 数据库 - ITeye博客
转自:http://blog.sina.com.cn/s/blog_44c594a70101rsgj.html. 1,最容易困惑的是原子性和一致性,先谈这俩:. 原子性:事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行. 一致性: 事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态.

令人迷惑的CAP与ACID用语

- - 数据库 - ITeye博客
令人迷惑的CAP与ACID用语. CAP和ACID共享相同的词汇表:原子性(Atomic)、一致性(Consistent),诸如此类. 但内有玄机:这些词语虽一样,但它们的意思是完全不同的东西. CAP来自分布式系统理论,而ACID属于数据库系统. 分布式数据库既使用CAP词汇,也使用ACID词汇,这显然造成许多混淆.

Base: 一种Acid的替代方案-转载

- - 人月神话的BLOG
原文: http://duanple.blog.163.com/blog/static/709717672011631101917811/. 本文是Ebay的架构师在2008年发表给ACM的文章,是一篇解释BASE原则,或者说最终一致性的经典文章. 文中Dan讨论了BASE与ACID原则的基本差异, 以及如何设计大型网站以满足不断增长的可伸缩性需求,期间如何对业务做调整与折衷.

hive 3.x 比hive2 性能提高2-50倍,支持增删改查ACID

- - 数据库 - ITeye博客
Apache Hive 3.x 架构介绍. hive 的更新操作一直是大数据仓库头痛的问题,在3.x之前也支持update,但是速度太慢,还需要进行分桶,现在hive 支持全新ACID,并且底层采用TEZ 和内存进行查询,性能是hive2的50倍. 生产建议升级到hive3.1.1版本. 了解Apache Hive 3主要的设计更改,例如默认的ACID事务处理和仅支持瘦配置客户端,可以帮助您使用新功能来满足企业数据仓库系统不断增长的需求.

分布式选主 -- 利用Mysql ACID和Lease协议实现选主和高可用

- - CSDN博客架构设计推荐文章
      在实际生产开发中,遇到一些多节点共存,需要选主,并且要实现HA自动容错的场景,思考了写方法拿出来和大家分享一下. Lease协议,Mysql ACID.       系统中有很多应用场景要类似主从架构,主服务器(Master)对外提供服务,从服务器(Salve)热备份,不提供服务但随时活着,如果Master出现宕机或者网络问题,Slave即可接替Master对外服务,并由Slave提升为Master(新主).