在学习分布式事务之前,我们需要先了解下事务的相关知识。
事务的ACID
- Atomic:原子性,就是很多的sql一起执行,要么一起成功,要们都不执行,不允许某个SQL执行成功,某个SQL执行失败了。
- Consistency:一致性,这个是针对数据一致性来说的,就是一组SQL执行之前,数据是没有问题的,执行之后,这个数据也必须是没有问题的,不要执行完了SQL结果应该需要修改的数据没有执行。
- Isolation: 隔离性,这个说的是多个事务在执行的时候是不能相互干扰的,不要事务A操作了某个数据,事务B过来把这数据给修改了,导致事务A的操作执行出错了。
- Durability: 持久性,如果事务成功了,就必须要永久对数据的修改是有效的,不要过一会修改的数据找不到可。
事务的隔离级别
-
读未提交,Read Uncommitted,这个就是说某个事务还没有提交的时候,修改的数据就让别的事务给读到了。这样很容易导致出错了,这个也叫脏读。
-
读已提交,Read Committed(不可重复读),就是事务A,先查询应该数据的值是a,然后过了一段时间,事务B把这个数据给修改成了b而且还提交了,此时事务A再次查询到这个数据的时候这