您的位置:首页 > 科技 > 能源 > MySQL高级-事务-并发事务演示及隔离级别

MySQL高级-事务-并发事务演示及隔离级别

2024/12/23 9:37:49 来源:https://blog.csdn.net/m0_65152767/article/details/140064062  浏览:    关键词:MySQL高级-事务-并发事务演示及隔离级别

文章目录

  • 0、四种隔离级别
  • 1、创建表 account
  • 2、修改当前会话隔离级别为 read uncommitted
    • 2.1、会出现脏读
  • 3、修改当前会话隔离级别为 read committed
    • 3.1、可以解决脏读
    • 3.2、会出现不可重复读
  • 4、修改当前会话隔离级别为 repeatable read(默认)
    • 4.1、解决不可重复读
    • 4.2、会出现幻读
  • 5、修改当前会话隔离级别为 serializable
    • 5.1、可以解决幻读

0、四种隔离级别

在这里插入图片描述
在这里插入图片描述

1、创建表 account

drop table if exists account;
create table account(
id int primary key AUTO_INCREMENT comment 'ID',
name varchar(10) comment '姓名',
money double(10,2) comment '余额'
) comment '账户表';
insert into account(name, money) VALUES ('张三',2000), ('李四',2000);

2、修改当前会话隔离级别为 read uncommitted

mysql> select @@transaction_isolation;
+-------------------------+
| @@transaction_isolation |
+-------------------------+
| REPEATABLE-READ         |
+-------------------------+
1 row in set (0.00 sec)mysql> set session transaction isolation level read uncommitted;
Query OK, 0 rows affected (0.00 sec)mysql> select @@transaction_isolation;
+-------------------------+
| @@transaction_isolation |
+-------------------------+
| READ-UNCOMMITTED        |
+-------------------------+
1 row in set (0.00 sec)mysql> 

2.1、会出现脏读

一个事务读到另外一个事务还没有提交的数据。
在这里插入图片描述>如果要解决脏读可以把隔离级别修改为 read committed

3、修改当前会话隔离级别为 read committed

3.1、可以解决脏读

在这里插入图片描述

3.2、会出现不可重复读

一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读
在这里插入图片描述

4、修改当前会话隔离级别为 repeatable read(默认)

4.1、解决不可重复读

在这里插入图片描述

4.2、会出现幻读

一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了幻影

在这里插入图片描述
在这里插入图片描述

5、修改当前会话隔离级别为 serializable

mysql> set session transaction isolation level serializable;
Query OK, 0 rows affected (0.00 sec)mysql> select @@transaction_isolation;
+-------------------------+
| @@transaction_isolation |
+-------------------------+
| SERIALIZABLE            |
+-------------------------+
1 row in set (0.00 sec)mysql> 

5.1、可以解决幻读

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com