0
点赞
收藏
分享

微信扫一扫

Mysql优化学习25-InnoDB的杀手锏:事务

##1.事务四个特性

Mysql优化学习25-InnoDB的杀手锏:事务

#####1.1原子性
Mysql优化学习25-InnoDB的杀手锏:事务

#####1.2一致性
Mysql优化学习25-InnoDB的杀手锏:事务
在讲一致性的时候老师提到一个例子我觉得很形象,就是小明有100块钱,然后给了小红,那么在之前和之后这100块钱是一直存在的,这就叫一致性,不能说100没了或者100少了这就不是一致性了。

#####1.3隔离性
Mysql优化学习25-InnoDB的杀手锏:事务

#####1.4持久性

Mysql优化学习25-InnoDB的杀手锏:事务

Mysql优化学习25-InnoDB的杀手锏:事务

##2.隔离级别

#####2.1 读未提交

Mysql优化学习25-InnoDB的杀手锏:事务
如上图所说读未提交就是一个事务还没提交,别的事务就可以读取到就像是没有事务似的。

首先我们每次测试不同的隔离级别的时候首先要设置一下:
Mysql优化学习25-InnoDB的杀手锏:事务

下面是一个实例:
Mysql优化学习25-InnoDB的杀手锏:事务
可以看到两边都开起了事务,这边更新了下还没提交事务,那边就可以读取到。

#####2.2 读提交
Mysql优化学习25-InnoDB的杀手锏:事务

实例:

Mysql优化学习25-InnoDB的杀手锏:事务

Mysql优化学习25-InnoDB的杀手锏:事务

可以看到虽然左边更新了,左边也可以查到但是右边是看不到更新之后的数据的,只有左边提交了,右边才可以查到最新的数据。

而如果右边更新呢?

Mysql优化学习25-InnoDB的杀手锏:事务
会发现卡顿住了,这就说明左边在开启事务更新数据的时候,给数据加了行级锁,这样别的事务就无法写了,但是读可以因为是读了历史快照数据。只有左边给提交了锁才会被释放,右边才可以读写。

#####2.3可重复读

Mysql优化学习25-InnoDB的杀手锏:事务

实例:

首先还是调整一下事务的隔离级别

还是老操作,两边都开启事务:

Mysql优化学习25-InnoDB的杀手锏:事务

然后左边我们修改了数据然后提交,右边开启事务之后查询还是老数据,而右边只有提交了事务之后才能看到最新的数据。

#####2.4可串行化

Mysql优化学习25-InnoDB的杀手锏:事务

实例:
首先我们还是更换为可串行化的事务隔离级别;

Mysql优化学习25-InnoDB的杀手锏:事务

两边都开启事务之后,左边修改数据然后加了锁,右边读数据要加读锁结果发现加不上所以就卡着了,之前的隔离级别都是至少可以读历史快照的,现在连快照都读不了。

##总结

Mysql优化学习25-InnoDB的杀手锏:事务

举报

相关推荐

0 条评论