数据库-事务
数据库就不用我解释了,通俗理解就是存放数据的一个系统。这里主要说一下数据库的事务
首先事务是什么:
事务是数据库中最小的工作单元,是单个逻辑的一系列操作,这些操作在执行完成后才向数据库提交数据,如果每个操作没问题,成功提交,只要有一个失败,所有的操作都失败
通俗的理解就是:事务相当于数据库的一个隔绝的房间,在这个房间里面有一个或者多个人干活,这个房间有个规矩,所有的干活的人只有都正常的完成工作才算是完成,只要有一个人没有完成,那全部都按照没完成处理。
为什么要有事务:
事务的四大特性:
- 原子性:所谓的原子性是一个最小的逻辑单元,此逻辑单元内所有的操作要么都成功执行,只要有一个失败都失败
- 隔离性:事务与事务之间的操作是互不影响的
- 持久性:只要事务成功提交,对数据库的改变是永久性的
- 一致性:一致性是说的数据库的一种状态,事务提交之前和提交之后都必须保这个一致性的状态。
一致性与原子性之间可能不好去理解:如果用字面的意思去理解一致性与原子性很容易理解为,一致性就是说的 要么都成功要么都失败,其实这样是不对的。下面我举例说明一下这两个之间的区别与联系:
区别:
比如 现在系统存在账号A,B 每个账户初次分配1000元,系统的账户总金额应该是2000元,这个总金额可以看成系统一致性的一种状态
现在由A发起转账给B,在发出的时候A就应该从自身减除转的这笔钱 这是时候B并没有加上,所以这个时候总金额发生了变化,数据的一致性是不满足的
但A减去后 给B加到这笔钱,总金额由恢复了2000元,数据的状态又恢复为了一致性,所以说 事务提交完成后必须保持一致性状态。这个一致性的状态不一定是总金额,可以由自己去设置这个状态的标识。
原子性说的是 A账户减钱到B账户加钱成功这个可以看成一个原子性的操作,要么A减成功B加成功,只要有一个失败,应该都失败。
联系
数据库的原子性是一致性的一种保障,但是原子性操作的结果不一定是数据一致的 比如 我也可把A账户减钱看做一个原子性的操作,此操作虽然保证了原子性,但一致性没有得到保证。

浙公网安备 33010602011771号