3、事务的隔离级别实训报告

分组信息:

终端1:学生姓名 学生1 ip:192.168.1.82

终端2:学生姓名 学生2 ip:192.168.1.74

一、提出任务

1.任务目标

(1)理解事务的概念。

(2)熟悉mysql不同隔离级别的特点、隔离级别的设置。

(3)掌握角色的创建、删除方法。

2.解决的问题

熟练掌握mysql的隔离级别设置。

二、分组要求

两个同学一组,电脑设置在同一局域网,一个同学的电脑是“终端1”,另一个同学的电脑是“终端2”。“终端1”创建1个用户并分配权限给“终端2”使用。

以下操作可以参考:

【终端1】

1.在本地主机创建数据库“exam”,再其中创建数据表“tb”,并写入数据。

2.在本地主机创建账号。

2.给账号分配向tb表读、改、写数据的权限。

“终端1”远程访问信息:

主机名:192.168.1.100(根据自己实际地址修改)

账号:zhongduan2

密码:222222

三、实验内容

(二).隔离级别操作实验。

1.在 MySQL 中,可以通过show variables like '%tx_isolation%'或select @@tx_isolation;语句来查看当前事务隔离级别。

提示:在MySQL 8.0.3 中,tx_isolation 变量被 transaction_isolation 变量替换了。在 MySQL 8.0.3 版本中查询事务隔离级别,只要把上述查询语句中的 tx_isolation 变量替换成 transaction_isolation 变量即可。

2. 另开启一个终端,现在有终端1和终端2;在终端1终端2分别执行下列语句:

隔离级别为read-uncommitted,未提交时就可以读取到数据。

mysql> set transaction_isolation='read-uncommitted';

mysql> select @@transaction_isolation;

mysql> select * from tb;

终端1:

?截图?

终端2:

?截图?

在两个终端同时开启事务。

mysql> start transaction;

开启事务之后的操作有所不同了。下面分别指明终端1终端2的操作。

【终端1】

update tb set age=19 where id=1;

mysql> select * from tb;

?截图?

【终端2】

mysql> select * from tb;

?截图?

问题思考:在同一个事务中,看到的是修改后的数据吗?不是

终端1和终端2都提交以结束事务。

3. 一样,在终端1和终端2上修改隔离级别为read-committed(只有提交后才可以读取)

mysql> set transaction_isolation='Read-committed';

mysql> select @@transaction_isolation;

终端1和2都开启事务;

mysql> start transaction;

终端1:

?截图?

终端2:

?截图?

终端1执行插入操作

mysql> insert into tb values(3,18);

?截图?

终端2查询数据

mysql> select * from tb;

?截图?

问题思考:终端2能否看到终端1新添加的数据?不能

终端1提交

mysql> commit;

终端2查看数据

mysql> select * from tb;

?截图?

问题思考:终端2能否看到终端1新添加的数据?

4. 在终端1和2修改隔离级别并开启事务。

mysql> set transaction_isolation=' Repeatable-read';

mysql> select @@transaction_isolation;

终端1和2都开启事务;

mysql> start transaction;

终端1:

?截图?

终端2:

?截图?

终端1插入数据

mysql> insert into tb values(4,21);

?截图?

终端2查询数据

mysql> select * from tb;

?截图?

问题思考:终端2能否看到终端1新添加的数据?不能

终端1提交

mysql> commit;

终端2查看数据

mysql> select * from tb;

?截图?

问题思考:终端2能否看到终端1新添加的数据?不能

终端2提交

mysql> commit;

终端2查看数据

mysql> select * from tb;

?截图?

问题思考:终端2能否看到终端1新添加的数据?

5. 在终端1和2修改隔离级别并开启事务。

mysql> set transaction_isolation=' serializable';

mysql> select @@transaction_isolation;

终端1和2都开启事务;

mysql> start transaction;

终端1:

?截图?

终端2:

?截图?

终端1执行更新操作

mysql> update tb set age=4 where id=1;

?截图?

终端2执行查询操作

mysql> select * from tb;

?截图?

问题思考:终端2能否看到终端1修改的数据?不能,光标一直在闪

当终端1提交commit结束事务后终端2才能看到修改后的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乄辰_qq_2791629529

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值