数据库-事务

数据库就不用我解释了,通俗理解就是存放数据的一个系统。这里主要说一下数据库的事务

首先事务是什么:

  事务是数据库中最小的工作单元,是单个逻辑的一系列操作,这些操作在执行完成后才向数据库提交数据,如果每个操作没问题,成功提交,只要有一个失败,所有的操作都失败

  通俗的理解就是:事务相当于数据库的一个隔绝的房间,在这个房间里面有一个或者多个人干活,这个房间有个规矩,所有的干活的人只有都正常的完成工作才算是完成,只要有一个人没有完成,那全部都按照没完成处理。

为什么要有事务:

  事务的四大特性:

  1. 原子性:所谓的原子性是一个最小的逻辑单元,此逻辑单元内所有的操作要么都成功执行,只要有一个失败都失败
  2. 隔离性:事务与事务之间的操作是互不影响的
  3. 持久性:只要事务成功提交,对数据库的改变是永久性的
  4. 一致性:一致性是说的数据库的一种状态,事务提交之前和提交之后都必须保这个一致性的状态。

  一致性与原子性之间可能不好去理解:如果用字面的意思去理解一致性与原子性很容易理解为,一致性就是说的 要么都成功要么都失败,其实这样是不对的。下面我举例说明一下这两个之间的区别与联系:

 区别:

  比如 现在系统存在账号A,B 每个账户初次分配1000元,系统的账户总金额应该是2000元,这个总金额可以看成系统一致性的一种状态

  现在由A发起转账给B,在发出的时候A就应该从自身减除转的这笔钱  这是时候B并没有加上,所以这个时候总金额发生了变化,数据的一致性是不满足的
  但A减去后 给B加到这笔钱,总金额由恢复了2000元,数据的状态又恢复为了一致性,所以说 事务提交完成后必须保持一致性状态。这个一致性的状态不一定是总金额,可以由自己去设置这个状态的标识。

  原子性说的是 A账户减钱到B账户加钱成功这个可以看成一个原子性的操作,要么A减成功B加成功,只要有一个失败,应该都失败。

 联系

   数据库的原子性是一致性的一种保障,但是原子性操作的结果不一定是数据一致的 比如 我也可把A账户减钱看做一个原子性的操作,此操作虽然保证了原子性,但一致性没有得到保证。

  

 

posted @ 2020-03-30 21:52  风华123  阅读(121)  评论(0)    收藏  举报