##1.事务四个特性
#####1.1原子性
#####1.2一致性
在讲一致性的时候老师提到一个例子我觉得很形象,就是小明有100块钱,然后给了小红,那么在之前和之后这100块钱是一直存在的,这就叫一致性,不能说100没了或者100少了这就不是一致性了。
#####1.3隔离性
#####1.4持久性
##2.隔离级别
#####2.1 读未提交
如上图所说读未提交就是一个事务还没提交,别的事务就可以读取到就像是没有事务似的。
首先我们每次测试不同的隔离级别的时候首先要设置一下:
下面是一个实例:
可以看到两边都开起了事务,这边更新了下还没提交事务,那边就可以读取到。
#####2.2 读提交
实例:
可以看到虽然左边更新了,左边也可以查到但是右边是看不到更新之后的数据的,只有左边提交了,右边才可以查到最新的数据。
而如果右边更新呢?
会发现卡顿住了,这就说明左边在开启事务更新数据的时候,给数据加了行级锁,这样别的事务就无法写了,但是读可以因为是读了历史快照数据。只有左边给提交了锁才会被释放,右边才可以读写。
#####2.3可重复读
实例:
首先还是调整一下事务的隔离级别
还是老操作,两边都开启事务:
然后左边我们修改了数据然后提交,右边开启事务之后查询还是老数据,而右边只有提交了事务之后才能看到最新的数据。
#####2.4可串行化
实例:
首先我们还是更换为可串行化的事务隔离级别;
两边都开启事务之后,左边修改数据然后加了锁,右边读数据要加读锁结果发现加不上所以就卡着了,之前的隔离级别都是至少可以读历史快照的,现在连快照都读不了。
##总结