当前位置:   article > 正文

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

为什么具体业务是用不可重复读好还是读提交好

可重复读:两个事务进行数据操作他们是互不干扰的 ,事务先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.登陆数据库查看数据

5512ddeb6957406c9732bf88e5736828.png

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

0ab1fbc8e397ee72c73e93f5e7d6acbd.png

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

7cc0f0d83188c6218b9b0721e1a7cfa7.png

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

正式开始测试   可重复读

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

1 .两个窗口都开启事务

7373442f5f2ce3451128945e1d345668.png

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

7330600ca2910a4bf77a1c6de4ef10da.png

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

f338eb95c8077678970a86605ba3fb34.png

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

8474b76c5fefb23061e1b2e089990658.png

5. 窗口B提交事务

55fc8e270f78aeeddad0c6b829b2d55f.png

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

87c3f2f71fa455f2ed70422cc8dbd069.png

7. 窗口A提交

73e2e9683053377b78d3f4e721050d6e.png

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

8caac4690d04cba29134397947be3a55.png

正式开始测试   读已提交

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

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

4af324ee973709f100a50a5d08f03869.png

2.事务A查询数据

332ed705fd772d52e410e276b3f8fe7a.png

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

a2b9535ad9e014e859e59b0e8036367f.png

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

f460a12ce2362f8b13aaa0a2742468f4.png

5 .事务B提交数据

590eb4f7b343ee6ccf8698264e1dd5c3.png

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

bf169e1eb69ed3e043d4130edbe86dbd.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/239569
推荐阅读
相关标签
  

闽ICP备14008679号