如何理解mysql的事务中的acid中单consistency

Mysql事务的基本特征ACID,我想没人不知道

  • Atomicity
  • Consistency
  • Isolation
  • Durability

简单来说,AID,其实都特别容易理解

  • A: 事务虽然包含多个mysql操作,但是仍被看做一个原子,要么都成功,要么都失败
  • I: 独立性,这是指两个事务之间是相互独立的,A事务不依赖B事务
  • D: 永久性的,这个也好理解,所有操作都是持久化的,不论服务器发生了什么

但是C怎么理解呢?consistency一致性,谁和谁一致?为什么要一致,可能为什么要一致,这个比较要理解,为了避免数据乱七八糟被,比如,A+B账户总计100元,无论A,B之间如何转账,A+B账户总计都应该是100。忽然看到这个例子就很明白了,一致性是指,事务结束后,前一个状态和后一个状态要符合逻辑上的一致性,这个一致性英文描述为:

According to this property, the saved data must not damage data integrity. This means that the modified data must provide the constraints and other requirements that are defined in the database.

事务造成的结果(状态)不能符合数据库中的定义的一些constraints(限制)或者其他要求(requirements),什么是requirements?上述的A+B,100总数不变类似这种的就是requirements,什么是constraints呢?比如db中定义数量不能小于0,这也是constraints。

那么再回到第一个问题,谁和谁一致呢?可以确定的是某个状态下的数据,比如事务commit后的数据,那么它需要和谁保持一致呢?它可能需要和commit之前的数据要保持业务逻辑一致,它也可能需要和数据库定义的类型保持一致,等等。

那么为什么要这么要求呢?很显然为了保持数据的准确性和可靠性,才能和事务设计的初衷一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值