单机事务
单机事务,也就是大家平时在操作数据库的时候使用的事务,单机事务是指在单个计算机或数据库实例上执行的事务。
在单机事务中,所有的操作都在同一个数据库实例上执行,因此可以使用本地事务(Local Transaction)的方式来实现事务。本地事务是指在同一个数据库连接下执行的一系列数据库操作,这些操作要么全部执行成功,要么全部失败,如果出现错误,则回滚到事务开始前的状态。
说明:单机事务通常由数据库本身提供支持。
为什么会引发分布式事务问题
分布式事务是由于分布式系统的出现而引起的。在传统的单体应用中,通常只有一个数据库实例,事务操作只涉及该实例的数据,可以通过本地事务来保证数据的一致性。而在分布式系统中,不同的服务(服务可能部署在不同的机器上)可能会涉及到不同的数据库实例,如果不采用特殊的机制来保证数据的一致性,就可能会导致数据不一致的情况。因此,为了保证在分布式系统中进行跨多个数据库实例的操作时数据的一致性,需要引入分布式事务机制。
提示:大多数业务都是因为系统拆分(例如搞微服务),然后搞分库分表之后,引发了分布式事务问题。
分布式事务例子
假设一个电商平台的订单支付流程包含了多个服务,比如生成订单、扣减库存、生成支付记录等等,这些服务都是独立部署,拥有独立的数据库实例。如果支付成功,所有服务都需要提交事务,而如果支付失败,则所有服务都需要回滚事务,以保证数据的一致性。
在这个例子中,整个订单支付过程就是一个分布式事务,需要跨越多个节点(多个数据库),并且需要保证所有服务的操作要么全部成功,要么全部失败,以保证整个系统数据的一致性。