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

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

 

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

 

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

 

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

 

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

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

 

 

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

原子性(Atomic)

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

一致性(Consistency)

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

隔离性(Isolation)

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

持久性(Durability)

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

猜你喜欢

转载自flyfoxs.iteye.com/blog/2087543
今日推荐