(1)事务的四个特性的理解。特性就是属性,就像类的属性一样。
原子性:我的理解是所有的事务都是一个过程,这个过程要么完成,要么失败。
一致性:基于原子性,事务在操作数据的过程中,如果完成,那数据也要完成更新。如果失败,那所有数据不能进行更新。
隔离性:事务与事务之间的处理关系。分情况。
持久性:事务完成后,不会再丢失了,哪怕宕机。
(2)mysql的四种隔离性等级和对应解决的三种状况。
READ-UNCOMMITTED(读取未提交内容):意思就是不同的事务之间是透明的,事务A在操作的数据对于事务B来说可以随时查询、更新和插入。
READ-COMMITTED(读取提交内容):在事务A还没提交前,不允许事务B读取事务A处理的数据。这样不会出现脏读,即在事务B开始后和结束前,同一个数据前后读取的值会不一样的问题。原因是这个数据在事务B处理过程中事务A回滚了数据。
REPEATABLE-READ(可重复读):在事务A还没有提交前,不允许事务B修改事务A处理中的数据。 这样不会出现不可重复度,即在一个事务A开始和结束前,同一个数据前后读取的值会不一样的问题。原因是这个数据在事务A处理过程中被事务B更新了数据。
SERIALIZABLE(序列化):在一个事务A还没提交前,不允许事务B插入事务A处理相关表的新数据。这样不会出现幻读,即在一个事务A开始和结束前,同一个数据前后读取的值会不一样的问题(会出现多了其他数据)。原因是这个数据在事务A处理过程中被事务B新添了数据。
总结:四种事务类型都是针对读取数据出现问题的解决方案。出现问题的原因由低到高分别是由事务回滚、更新数据和添加数据造成的,所以对应四种隔离等级来解决这些问题。
附带一篇参考文章:https://blog.csdn.net/qq_33290787/article/details/51924963。写的很好,容易理解。