当前位置: 首页 > 编程笔记 >

mysql 详解隔离级别操作过程(cmd)

湛宝
2023-03-14
本文向大家介绍mysql 详解隔离级别操作过程(cmd),包括了mysql 详解隔离级别操作过程(cmd)的使用技巧和注意事项,需要的朋友参考一下

读未提交示例操作过程-Read uncommitted

1、打开两个MySql的命令提示行,均进入相同数据库,并检查当前表内容为相同数据如下:

2、在A、B两端执行select @@tx_isolation;检查当前默认的隔离级别别,可以发现都是

Repeatable Read –可重复读-(在当前事务内,重复读取第一次读取过的数据就叫可重复读。)

3、修改A端的隔离级别为readuncommitted –读未提交。意思是可以读取别人没有提交的数据。

set transactionisolation level read uncommitted;

在绿色的MySql5.5上请执行:

Set sessiontransaction isolation level read uncommitted;

   然后再查看是否已经发生改变:

4、在A、B两端都开启事务

starttransaction;

5、在B端修改一行数据如:

update stud setname='Jhon' where id=1;

   其后在A端执行查询:select * from stud;

6、此时B端再次执行回滚操作

Rollback;

   再在A端进行查询,结果发现数据又回到了之前的数据。这就是脏读

7、对于B端写入的新数据,如果没有提交A端也一样能查询到,这叫幻读

 读已提交操作过程:-read COMMITTED

1、 检查A、B两端是否一致:

2、修改A端(左)的隔离级别为readcommitted;

set transactionisolation level read committed;

   在A端开启事务:

   starttransaction;

   在B端开启事务

3、在A端进行查询:

Select * fromstud;

在B端修改一行记录并提交

Update stud setname='itcast' where id=1;

再回到A端进行查询,发现在同一个事务内,两次查询的结果不一样:

 可重复读示例Repeatable Read

1、查看A端的隔离级别是否为Repeatableread级别:

Select@@tx_isolation;

2、先在A端在开启的事务内进行查询。

然后在B端修改数据库的内容。

最后再在A端的同一事务内进行查询,发现结果一致。

 Serializable是最高级的隔离级别

1、在A端设置隔离级别为Serializable

set transactionisolation level serializable;

在A端开启一个事务-并对stud表进行查询。

在B端开启一个事务,并写入一行记录。此时发现B的代码并没有执行,因为它在等A提交之后它才执行。

类似于线程同步的概念

 这四种隔离级别采取不同的锁类型来实现,若读取的是同一个数据的话,就容易发生问题。例如:

脏读(Drity Read):某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack(回滚)了操作,则后一个事务所读取的数据就会是不正确的。

不可重复读(Non-repeatable read):在一个事务的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个事务更新的原有的数据。

幻读(Phantom Read):在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列(Row)数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

 类似资料:
  • 本文向大家介绍MySQL四种事务隔离级别详解,包括了MySQL四种事务隔离级别详解的使用技巧和注意事项,需要的朋友参考一下 本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一、事务的基本要素(ACID)   1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所

  • 本文向大家介绍Mysql事务隔离级别之读提交详解,包括了Mysql事务隔离级别之读提交详解的使用技巧和注意事项,需要的朋友参考一下 查看mysql 事务隔离级别 可以看到当前的事务隔离级别为 READ-COMMITTED 读提交 下面看看当前隔离级别下的事务隔离详情,开启两个查询终端A、B。 下面有一个order表,初始数据如下 第一步,在A,B中都开启事务 第二步查询两个终端中的number值

  • 本文向大家介绍MySQL事务及Spring隔离级别实现原理详解,包括了MySQL事务及Spring隔离级别实现原理详解的使用技巧和注意事项,需要的朋友参考一下 1、事务具有ACID特性 原子性(atomicity):一个事务被事务不可分割的最小工作单元,要么全部提交,要么全部失败回滚。 一致性(consistency):数据库总是从一致性状态到另一个一致性状态,它只包含成功事务提交的结果 隔离型(

  • 本文向大家介绍浅析MYSQL REPEATABLE-READ隔离级别,包括了浅析MYSQL REPEATABLE-READ隔离级别的使用技巧和注意事项,需要的朋友参考一下 REPEATABLE-READ 即可重复读,set autocommit= 0或者START TRANSACTION状态下select表的内容不会改变。这种隔离级别可能导致读到的东西是已经修改过的。 比如: 回话一中读取一个字段

  • 本文向大家介绍Mysql事务隔离级别原理实例解析,包括了Mysql事务隔离级别原理实例解析的使用技巧和注意事项,需要的朋友参考一下 引言 大家在面试中一定碰到过 说说事务的隔离级别吧? 老实说,事务隔离级别这个问题,无论是校招还是社招,面试官都爱问!然而目前网上很多文章,说句实在话啊,我看了后我都怀疑作者弄懂没!因为他们对可重复读(Repeatable Read)和串行化(serializable

  • 本文向大家介绍MySQL的默认事务隔离级别是?相关面试题,主要包含被问及MySQL的默认事务隔离级别是?时的应答技巧和注意事项,需要的朋友参考一下 读未提交(RU): 一个事务还没提交时, 它做的变更就能被别的事务看到. 读提交(RC): 一个事务提交之后, 它做的变更才会被其他事务看到. 可重复读(RR): 一个事务执行过程中看到的数据, 总是跟这个事务在启动时看到的数据是一致的. 当然在可重复