ACID 的全称是Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Duarability(持久性)。

原子性是要求一个交易\事务要和物理学上的原子上一样是不可分割的,要么全部发生了,要么没发生。就像黑帮使用现金进行毒品交易时必须一手交钱一手交货,不允许出现其它情况。经典的例子是银行转账,比如张三向李四转100元,张三的账户减去100元,然后李四的账户加上100元。如果交易运行到一半的时候发生意外比如停电、网络中断等,可能会导致张三的账户已经减去100元,但是李四的账户还没有加上100元,造成100元凭空消失。可以合理使用数据库管理系统的事务来避免上述情况。把张三账户减去100元和李四账户加上100元写在同一个事务里,数据库管理系统会保证这一个事务的原子性。 交易和事务是英语单词transaction 的不同翻译而已。数据库最初的用户(金主爸爸)就是银行,程序员就借用了 交易这个词来指代事务。

一致性是要求数据库的数据要满足一些预定义的规则或者约束,这些规则或约束来自真实世界的业务需求。比如银行普通储蓄账户的余额不能为负数;现金在交易过程中只是发生转移,不能消失。在真实世界中,张三给李四100元现金,要求张三自己必须先有至少100元现金。支付现金后,张三和李四的总现金不会发生改变。在数据库里张三和李四的账户总余额在转账后也不能变化。

数据库管理系统实现了ACID特性,并不代表由数据库管理系统和数据库应用程序组成的数据库应用系统具有ACID特性。要实现数据库应用系统的ACID特性,在开发数据库应用程序时,必须正确使用数据库管理系统。(就是坑很多,要很小心才能不被埋了)。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据