yan's blog

数据库的ACID里面C的含义

数据库的ACID里面,C即是 consistency。中文翻译过来叫做一致性,这个consistency怎么理解呢?

数据库里面的c,指的是在事务的过程中,对数据库的操作都是要在保持【数据库完整性】的基础上。对数据库来说,这些数据,不会违背数据库本身的一致性。比如外键关系,不能出现事务失败,原有外键关系丢失的情况。比如某个字段限制不能是null,但是事务失败,设置为了null。需要注意的是,数据库完整性不代表数据是正确的,只是代表数据是符合数据库的要求。比如数据库定义某个字段是int类型,那么符合ACID的数据库能保证这个字段的值不会为其他类型,但是数据库不会保证这个值是对的,是符合业务的。

需要注意的是,这个一致性和分布式CAP里面的一致性不一样。分布式CAP里面的一致性指的是获取到的数据总是一致的,不会一个节点获取到的值是a,另一个节点获取到的值是b