温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MySQL事务的概念以及事务隔离级别介绍

发布时间:2021-09-04 11:22:07 阅读:120 作者:chen 栏目:数据库
亿速云mysql数据库,读写分离,安全稳定,弹性扩容,低至0.3元/天!! 点击查看>>

本篇内容主要讲解“MySQL事务的概念以及事务隔离级别介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL事务的概念以及事务隔离级别介绍”吧!

先简单介绍一下MySQL中事务的概念,它是指: 用于实现某种行为的SQL语句的组合,可以是单条SQL语句,也可以是多条。 就像线程一样,MySQL服务器允许多个事务并发执行去更新某些数据,为了保障安全,MySQL提供了四种隔离级别,用来限制不同事务之间的干扰。

四种隔离级别如下(按照级别由低到高):

  • read uncommitted(读未提交)

  • read committed(读已提交)

  • repeatable read(可重复读)

  • Serializable(串行化)

接下来按照这个顺序分别进行演示。

**准备工作**

由于我本地服务器上只有一个root用户,为了后续的演示操作,所以需要再新建一个用户testB,并授予相应权限。方便起见,下文中root、testB开启的事务称为A、B。

一、read uncommitted(读未提交)

分别登录到用户root和testB,以表t_ss作为实验表,通过查询可以看到表t_ss是空的。

MySQL事务的概念以及事务隔离级别介绍

分别将root和testB的隔离级别设置为 read uncommitted( 读 未提交)。

接着分别在root、testB中开启事务A、B,然后在B中向表t_ss插入一条数据。 这时候B中的事务还没有提交(commit),我们再在A中查表,可以看见, 即使B的事务还未提交,A中也可以查询到事务B插入的数据。

MySQL事务的概念以及事务隔离级别介绍

到这大家应该都能理解 read uncommitted( 读 未提交) 的含义了,通俗来说就是: 即使事务B没有commit,其它事务也能读取到事务B更新的数据,即能够读取事务没有提交的数据。 这是事务隔离级别中等级最低的一个。

二、read committed(读已提交)

将root和testB的事务隔离级别设置为 read committed(读已提交)。

MySQL事务的概念以及事务隔离级别介绍

同样开启两个事务,并在B中再插入一条数据,此时B事务未提交,当在A中查询时,发现并未查询到B新插入的数据。

MySQL事务的概念以及事务隔离级别介绍

当commit事务B后,A成功读取到B插入的数据。

MySQL事务的概念以及事务隔离级别介绍

总结一下,在read committed(读已提交)级别时, 其它事务只能读取事务B提交后的数据,未提交则读取不到。 这是大部分数据库的默认隔离级别。

三、repeatable read(可重复读)

将事务隔离级别设置为 repeatable read(可重复读) ,并分别开启事务。

MySQL事务的概念以及事务隔离级别介绍

A先查表,有两条数据,然后B插入一条数据并commit,A再查表,结果还是两条数据,但是B中查表所得结果是三条数据。(箭头指示命令执行顺序)

MySQL事务的概念以及事务隔离级别介绍

也就是说,当数据库处于repeatable read(可重复读)时, 同一个事务前后两次所读取的数据必须是一致的,无论事务B有没有插入数据。 它是MySQL的默认隔离级别。

四、Serializable(串行化)

将root的隔离级别设置为 Serializable(串行化) ,开启事务。当在事务A中查询表t_ss且未commit时,B事务一直在等待,到达指定时间后会报错,显示超时。

MySQL事务的概念以及事务隔离级别介绍

在事务A提交后,事务B才能够成功插入数据。

MySQL事务的概念以及事务隔离级别介绍

Serializable(串行化)是等级最高,要求最严的事务隔离级别,在这种情况下, 其它事务必须等待当前事务commit后才能执行。

到此,相信大家对“MySQL事务的概念以及事务隔离级别介绍”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

亿速云「云数据库 MySQL」免部署即开即用,比自行安装部署数据库高出1倍以上的性能,双节点冗余防止单节点故障,数据自动定期备份随时恢复。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://mp.weixin.qq.com/s/p32Tc6XhbHq_NbJWAiZnhQ?utm_source=tuicool&utm_medium=referral

AI

开发者交流群×