MySql教程

MySQL事务隔离级别实战演示

本文主要是介绍MySQL事务隔离级别实战演示,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

在这里插入图片描述

文章目录

  • 1 问题背景
  • 2 前言
  • 3 实战环境
  • 4 必备知识
  • 5 读未提交实战
  • 6 读已提交实战
  • 7 可重复读实战
  • 8 串行化实战

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 串行化实战

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

这篇关于MySQL事务隔离级别实战演示的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!