一篇文章弄懂MySQL的事务隔离级别
2019-10-12 本文已影响0人
封心_SH
先简单介绍一下MySQL中事务的概念,它是指:用于实现某种行为的SQL语句的组合,可以是单条SQL语句,也可以是多条。就像线程一样,MySQL服务器允许多个事务并发执行去更新某些数据,为了保障安全,MySQL提供了四种隔离级别,用来限制不同事务之间的干扰。 四种隔离级别如下(按照级别由低到高):
接下来按照这个顺序分别进行演示。
**准备工作**
由于我本地服务器上只有一个root用户,为了后续的演示操作,所以需要再新建一个用户testB,并授予相应权限。方便起见,下文中root、testB开启的事务称为A、B。
一、read uncommitted(读未提交) 分别登录到用户root和testB,以表t_ss作为实验表,通过查询可以看到表t_ss是空的。
二、read committed(读已提交) 将root和testB的事务隔离级别设置为read committed(读已提交)。
三、repeatable read(可重复读) 将事务隔离级别设置为repeatable read(可重复读),并分别开启事务。
四、Serializable(串行化) 将root的隔离级别设置为Serializable(串行化),开启事务。当在事务A中查询表t_ss且未commit时,B事务一直在等待,到达指定时间后会报错,显示超时。
以上便是四种事务隔离级别,希望能给大家带来一点帮助。
- read uncommitted(读未提交)
- read committed(读已提交)
- repeatable read(可重复读)
- Serializable(串行化)
接下来按照这个顺序分别进行演示。
**准备工作**
由于我本地服务器上只有一个root用户,为了后续的演示操作,所以需要再新建一个用户testB,并授予相应权限。方便起见,下文中root、testB开启的事务称为A、B。
一、read uncommitted(读未提交) 分别登录到用户root和testB,以表t_ss作为实验表,通过查询可以看到表t_ss是空的。
二、read committed(读已提交) 将root和testB的事务隔离级别设置为read committed(读已提交)。
三、repeatable read(可重复读) 将事务隔离级别设置为repeatable read(可重复读),并分别开启事务。
四、Serializable(串行化) 将root的隔离级别设置为Serializable(串行化),开启事务。当在事务A中查询表t_ss且未commit时,B事务一直在等待,到达指定时间后会报错,显示超时。
以上便是四种事务隔离级别,希望能给大家带来一点帮助。