设为首页 - 加入收藏 伊春站长网 (http://www.0458zz.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 2018 2019 wifi 2999
当前位置: 首页 > 综合聚焦 > 移动互联 > 评测 > 正文

一篇文章弄懂 MySQL 的事务隔离级别

发布时间:2019-10-15 13:35 所属栏目:[评测] 来源:封心
导读:先简单介绍一下MySQL中事务的概念,它是指:用于实现某种行为的SQL语句的组合,可以是单条SQL语句,也可以是多条。就像线程一样,MySQL服务器允许多个事务并发执行去更新某些数据,为了保障安全,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后才能执行。

以上便是四种事务隔离级别,希望能给大家带来一点帮助。

【编辑推荐】

  1. 大数据为什么不够聪明?机器要如何走向强人工智能
  2. 机器学习免费跑分神器:集成各大数据集,连接GitHub就能用
  3. 传统数据库不适合现代企业架构了?
  4. 2019年六个不错的数据分析工具
  5. MySQL常见的图形化工具
【责任编辑:张燕妮 TEL:(010)68476606】
点赞 0

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章