MySQL——事务隔离级别
2019-06-16 本文已影响0人
大黑跟小白的日常
1、读未提交、脏读、未授权读取;
解释
两个事务同时进行,事务2读取到了事务1修改了、但还没有完成事务commit的数据;
2、读已提交、不可重复读、授权读取;
解释
一个事务中,可以读取到其他事务提交的数据,所以说,在这个事务中针对一个数据的多次读取(重复读)可能会存在不同的值;
3、可重复读、幻读;
解释
一个事务中的任何时间点,针对同一个数据的读取始终是事务开始时的这个数据的值(已提交的值);
就算期间这个数据的值被其他事务提交改变,这个事务至始至终,读取到的这个值,都是该事务开始时数据库中这个数据的已提交值。
幻读解释 (如下解释 纯属搞笑 扯犊子 无心修改 就这样吧) 推荐阅读 https://www.jianshu.com/p/1975e453b2cf
由于它的可重复读的特性,从而产生幻读;
针对同一时刻,两个不同事务中对同一数据的读取可能会存在不同的结果,这一特性叫做幻读;
数据a在事务1开始时刻的值是1,那么在整个事务1生命周期中,事务1读取到的a都是1。
如果期间事务2把a值改变为2并提交,事务2结束;
然后事务1再次开启,读取到的值就变成2了。虽然在事务1前一次结束到事务1再一次开始期间,数据a都没有被修改过,但是针对数据a的读取就是出现了不同的值,就跟幻觉一样;
如图
image.png
4、串行化;
解释
最严格的事务隔离级别,所以事务串行执行。数据库事务访问效率低,不存在事务间数据干扰。