1.什么是事务
要么全部成功,要么全部失败
2.什么是本地事务
也就是基于关系型数据库的事务,也称为传统事务
常见模式 如:
transaction begin
insert/delete/update
…
transaction commit/rollback
本地事物的特征:
1.一次事务过程中只能连接一个支持关系型数据库.
2.事务的执行结果满足ACID
3.事务执行的过程中会用到数据库本身的锁机制.
数据库事务的四大特性ACID:
A(Atomic):原子性,构成事务的所有操作,要么都执行完成,要么全部不执行,不可能出现部分成功部分失败的情况。
C(Consistency):一致性,在事务执行前后,数据库的一致性约束没有被破坏。比如 :张三向李四转100元,转账前和转账后的数据是正确状态这叫一致性,如果出现张三转出100元,李四账户没有增加100元这就出现来数据错误,就没有达到一致性。
I(Isolation):隔离性,数据库中的事务一般都是并发的,隔离性是指并发的两个事务的执行互不干扰,一个事务不能看到其他事务运行过程的中间状态。通过配置事务隔离级别可以避免赃读、重复读等问题。
D(Durability):持久性,事务完成之后,该事务对数据的更改会被持久化到数据库,且不会被回滚。
数据库事务在实现时会将一次事务涉及的操作全部纳入到一个不可分割的执行单元,该执行单元中的所有操作要么都成功,要么都失败,只要其中任一操作执行失败,都将导致整个事务的回滚。
3.什么是分布式事务
分布式事务是一种涉及多个数据库或分布在不同服务器上的其他资源的事务。它用于协调这些资源的动作,以确保事务所做的更改是原子的、一致的、隔离的和持久的 (ACID)。
4.Seata 是什么
Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。
5.两阶段提交协议(2PC)
两阶段提交又称2PC(two-phase commit protocol),2pc是一个非常经典的强一致、中心化的原子提交协议。这里所说的中心化是指协议中有两类节点:一个是中心化协调者节点(coordinator)和N个参与者节点(partcipant)。
准备阶段:事务协调者,向所有事务参与者发送事务内容,询问是否可以提交事务,并等待参与者回复。事务参与者收到事务内容,开始执行事务操作,讲 undo 和 redo 信息记入事务日志中(但此时并不提交事务)。如果参与者执行成功,给协调者回复yes,表示可以进行事务提交。如果执行失败,给协调者回复no,表示不可提交。
提交阶段:如果协调者收到了参与者的失败信息或超时信息,直接给所有参与者发送回滚(rollback)信息进行事务回滚,否则,发送提交(commit)信息。参与者根据协调者的指令执行提交或者回滚操作,释放所有事务处理过程中使用的锁资源。(注意:必须在最后阶段释放锁资源) 。
6.redo log的文件和undo log文件的区别
当事务发生异常或显式回滚时,使用undo log回滚数据,即:存储的数据是修改或删除之前的数据,其数据类型以二进制blob类型存在,当回滚完成或者程序结束时,自动释放。
redo log当然存储的是修改或者删除之后的数据啦。redo log不是随着事务提交才写入文件的,而是从事务开始就逐步写入文件了(即使事务还没提交)