读已提交和可重复读的区别 命令行测试

可重复读:两个事务进行数据操作他们是互不干扰的 ,事务先A进行数据查询,事务B进行一次事务修改并进行数据提交,事务A再进行一次查询,数据是不改变的。

读已提交:两个事务进行数据操作,事务先A进行数据查询,事务B进行一次事务修改并进行数据提交,事务A再进行一次查询,数据是B修改后的数据。

 

// 涉及到的几个命令

mysql -uroot -p123456
use mydemo
select @@global.transaction_isolation,@@transaction_isolation;  (查看全局/会话隔离级别)

SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;(设置隔离级别为 可重复读)

SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;(设置隔离级别为 读已提交)

SHOW VARIABLES LIKE 'autocommit'; (查看是否自动提交)
set @@autocommit=0; (设置手动提交)
START transaction ;  (开启事务)
commit;  (事务提交)

 

 

1.登陆数据库查看数据

 

2.查看全局/会话隔离级别(mysql默认就是可重复读,不用做修改)

 

 

 

3.查看是否是自动提交,并设置为手动提交   设置autocommit为on;(ON、OFF、1、0)都可以

 

 

 

-- --   开启另外一个窗口  做上述相同操作  ----

    正式开始测试   可重复读

事务先A进行数据查询,事务B进行一次数据修改,事务A再次查询数据  数据不变,事务B进行数据提交,事务A再进行一次查询,数据是不改变的。

1 .两个窗口都开启事务

 

 

 

2.窗口A进行一次数据查询

 

 

 

3.窗口B做一个数据的删除,并查询一个数据(这里查询的数据是删除成功的,因为在同一个事务)

 

 

 

4.窗口A再次查询数据  (数据是不变的)

 

 

 

5. 窗口B提交事务

 

 

 6. 窗口A再次查询 (数据还是不变的)

 

 7. 窗口A提交

 

 

8.窗口A提交之后再次查询 数据是B修改后的

 

 

    正式开始测试   读已提交

 

事务先A进行数据查询,事务B进行一次事务修改,事务A再次查询数据  数据不变,事务B进行数据提交,事务A再进行一次查询,数据是改变的。

1.事务A和事务B都要要做的操作

 

 

2.事务A查询数据

 

 3.事务B进行一次数据删除 并查询数据

 

 

 4. 事务A再次查询数据  数据跟第一次相比不变

 

 

5 .事务B提交数据

 

 

 

6.事务A再次查询数据  发现事务B删除的数据不在了

 

posted @ 2020-08-25 17:46  爵士灬  阅读(4435)  评论(0编辑  收藏  举报