1、事务的概念:
其实事务是一种机制,将活动中涉及的所有的操作纳入到一个不可分割的执行单元中。事务是保证数据的一致性和可靠性的,隔离性的一种机制。
下面给出两种所有成功的操作,已经和不成功的操作:
2、回滚:由于事务的一致性,当一个事务中的某一个步骤失败的话,成功的事务会回滚。
比如是一个下定单的操作,下完订单要减库,减完库存的话,订单状态要更改。如果在改订单状态的时候出现了错误,将所有的状态回滚到原始的状态。这时刚才减的库存给加回来,下订单的信息会撤销。这就称之为回滚。上面的步骤为了保证事务的原子性。
事务的ACID特征
原子性:事务操作整体性,所有的步骤看成是一个整体,不可分割。
一致性:保证事务操作下数据正确性。
隔离性:事务与事务之间不可影响。保证事务在并发操作下数据的正确性。
持久性:事务对数据的修改的可靠性。一旦事务提交,数据就持久了,不可修改了。
什么时候使用数据库的事务
在修改多个不同的数据的时候可能会有连续的操作,比如下订单完要减库存,还有相关订单信息的生成。这时需要用事务,他们是在同一个数据库中操作。这时需要使用事务来约束保证数据的一致性,如果是不同的数据库就涉及到分布式事务。
分布式事务的产生:
一个业务中的操作针对的不是一台数据库,而是多台数据库。比如有一个下订单的业务逻辑:会执行两个操作:1、减库存。2、生成订单信息
由于在分布式环境中为了提高服务的性能然后把它分成不同的数据库。
如果不在分布式环境下,可以把这两个操作看成是一个整体,但是现在不能看成是一个整体
这时就是分布式事务问题产生的原因:
比如减少库存是第一步,新增订单是第二步。但是在操作过程中,减少库存成功了,新增订单失败了,这时分布式事务问题来了。由于在分布式系统中由多个独立的系统组成,多个子系统通过网络通信互相协作完成各个功能。但是不同的数据库。这时就会产生 分布式事务问题。
总结:在分布式的环境下很容易遇到分布式事务的问题,需要用相应的办法去解决。后面会写三四种的方式去解决事务的问题,敬请关注。