mysql事务隔离级别实验


一、实验数据:

建表语句:

CREATE TABLE `isolation` (
`id` int(11) NOT NULL,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_croatian_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

创建表名为:isolation的表,其中有两个字段,一个 id ,一个 name

原始数据:

insert into ISOLATION values(1,'name1'),(2,'name2'),(3,'name3');

插入三条记录。

二、准备:

分别打开两个mysql客户端A 、B

查看当前客户端隔离级别

SELECT @@tx_isolation

mysql InnoDB默认隔离级别为可重复读。

设置B客户端不自动提交:

查看自动提交设置:

show session variables like 'autocommit';

mysql InnoDB默认自动提交。

设置不自动提交:

set session autocommit=0;

客户端设置不自动提交事物成功。

一、脏读实验开始---------------------------------------

设置A的隔离级别为读未提交:

set session transaction isolation level read uncommitted;

客户端B启动一个事物

发现update的数据没有提交就读到了,回滚之后导致脏读。

发现insert的数据没有提交就读到了,回滚之后导致脏读。

发现delete的数据没有提交就读到了,回滚之后导致脏读。

脏读实验结束---------------------------------------

结论,脏读会读没有提交的update insert delete。

读已提交实验开始---------------------------------------

设置A的隔离级别为读已提交:

set session transaction isolation level read committed;

update的时候------>>>发现解决了脏读,但是在一个事物里面,两次查询的结果不一致,即解决不了重复读的问题

insert的时候------>>>发现解决了脏读,但是在一个事物里面,两次查询的结果不一致,即解决不了重复读的问题

delete的时候------>>>发现解决了脏读,但是在一个事物里面,两次查询的结果不一致,即解决不了重复读的问题

读已提交实验结束---------------------------------------

结论:解决了脏读,但是一个事物里面,同一个查询结果不一致,不能解决重复读的问题。

可重复读实验开始---------------------------------------

数据重新清理一下:

update的时候------>>>在一个事物里面,两次查询直间,读不到另外事物提交的内容,只有提交当前事物,新启事物查询的时候才能查到更新的,即解决不了重复读的问题

delete的时候------>>>在一个事物里面,两次查询直间,读不到另外事物提交的内容,只有提交当前事物,新启事物查询的时候才能查到更新的,即解决不了重复读的问题

insert的时候------>>>在一个事物里面,两次查询直间,读不到另外事物提交的内容,只有提交当前事物,新启事物查询的时候才能查到更新的,即解决不了重复读的问题

可重复读实验结束---------------------------------------

结论:解决了脏读,可重复读,好像mysql 5.7.26在可重复读隔离级别解决了 幻想读的现象(猜测,还没太明白)。

串行化读实验开始---------------------------------------

串行化读实验结束--------------------------------------

结论:串行化后,当一个事物没有提交,另外的事物不能修改对数据进行(update,insert,delete操作)。

优质内容筛选与推荐>>
1、WEB消息推送-comet4j
2、[转]学习j2ee的朋友一些值得研究的开源项目
3、Accelerated C# 2010
4、Codeforces1036G Sources and Sinks 【构造】【状态压缩】
5、C#实现网段扫描


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号