给自己总结点心路历程(狼人杀玩家),以前为了应付面试会去网上查一下资料大部分问题回复都很浅,应付面试也够用了百试百灵,但是时间一久又得重新去背,直到看了一篇关于jvm的垃圾回收机制的文章,写的是真的好,好到2年了文章都找不到了但我还能够记得文章里面的内容,我承认当时有刻意的去背,但是同时背的其他很多知识点我都忘记了,现在我做的就是重拾知识点,重点在于理解。
1.原子性,事务是数据库操作的逻辑单位,事务的操作要么全部成功提交到数据库,要么操作失败全部回滚不能对数据库造成任何影响。
2.一致性,事务的执行必定是使得数据库从一致性状态修改到另一个一致性状态,那么问题就来了,什么一致性,举个例子:张三有200元,李四有100元,在一个事务中张三转100元给李四,那么其他的数据只会看到 张三200元,李四100 元(这是提交前的数据),要么就看到张三100元,李四200元(这是提交后的数据),也就是说中间的张三100元,李四100元(中间状态)是对外不可见的。从以上例子可能会让人觉得一致性包含在原子性中间,但是:原子性注重的是事务要么全成功或者全失败的这个状态,一致性注重的是事务执行中的中间状态数据对外是不可见的,要么就是初始状态,要么就是结束状态后的数据。
3.隔离性,事务的执行不能其他事务的干扰,即一个事务的内部操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之前不能互相干扰。
4.持久性,就是当一个事务提交后,提交的数据就应该是永久的,之后的故障和操作都不能对其结果有任何影响