数据库的原子性可以推导出一致性吗

数据库用了很久了,最近看书又看到了ACID,突然想起来原子性就是不可分割, 既然是这样,那应该就可以保证一致性,为什么数据库的事务定义了4个特性.

 

其实这个问题的症结在怎么理解原子性,以前学物理的时候,留下了一个印象,原子性就是不可再分割的意思,但是在数据库事务里面却需要加上一些注释,是把本来几个可以分的事情整个在一起,要成功都成功,要失败都失败.

 

说简单点,就是事务里面的各个组成部分,并不是在一个时间点,而是分布在一个时间段(比如一分钟)里面去完成.

 

原子性只是保证了各个组成部分能够全部成功,或者都失败.但是无法保证一致性,比如各个部分只成功了一半,不让其他事务去读取.这样原子性也就无法独立的完成事务的一致性了.

 

如果原子性无法保证一致性,那原子性+隔离性是否可以保证一致呢?

答案是否定的,稍后有空再开博来讨论吧.

 

 

下面是事务ACID的详细定义.

 

原子性(Atomic)

事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。

一致性(Consistency)

事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。

隔离性(Isolation)

多个事务并发执行时,一个事务的执行不应影响其他事务的执行。

持久性(Durability)

已被提交的事务对数据库的修改应该永久保存在数据库中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值