MySQL事务隔离级别实战演示

在这里插入图片描述

1 问题背景

前面了解了MySQL官方解释的MySQL事务,详情看MySQL事务以及隔离级别官方解释。今天写写sql实战了解隔离级别会发生什么现象

2 前言

网上一大堆都只是停留在文字描述(读已提交会产生xxx,可重复读可避免xxx),本篇博客旨在使用sql实战解释清楚四个隔离级别到底是怎么样的。本文仅使用update、select做实战操作。(delete操作应该会有更复杂的现象。笔者经常遇到删除操作的业务方法报MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction异常)

3 实战环境

工具:MySQL8.0、Navicat。

表:设计了一个表做实战,如下所示:.

CREATE TABLE `t_product` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '商品名',
  `quantity` int DEFAULT NULL COMMENT '数量',
  `create_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

数据:往表里插入一条数据,如下所示:

insert into t_product (name, quantity) values ("MYSQL事务实战", 100); 

4 必备知识

MySQL设置数据库隔离级别

5 读未提交实战

实战背景,模拟两个并发的事务,在一个事务中做update操作,在另一个事务做查询操作,看看有什么现象。实战过程中需要开启两个MySQL命令窗口,各自代表一个事务。在此称窗口A、窗口B,方便后文描述。窗口A的事务称为事务A,窗口B的事务称为事务B。

在这里插入图片描述

6 读已提交实战

在这里插入图片描述

7 可重复读实战

在这里插入图片描述

8 串行化实战

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值