IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mysql事务问题 -> 正文阅读

[大数据]mysql事务问题

一、事务并发问题

1.脏读

A事务读取到B未提交事务的数据

2.不可重复读

同一事务查询结果不同,可能是其他事务提交了更新数据

3.幻读

A事务查询无数据,B事务这时插入数据,A事务还是没查到数据,但是插入会报错。

二、事务四种隔离级别

1.READ UNCOMMITTED 读未提交

脏读、不可重复读、幻读都会发生

2.READ COMMITTED 读已提交

脏读不会发生,不可重复读、幻读会发生

3.REPEATABLE READ 可重复读 (MySQL默认级别)

脏读,不可重复读不会发生,幻读会发生

4.SERIALIZABLE 串行化

脏读、不可重复读、幻读都不会发生

三、案例

1.查询、设置隔离级别

SELECT @@TRANSACTION_ISOLATION;
查询结果
在这里插入图片描述
MySQL默认的是REPEATABLE READ。
更改隔离级别
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
成功后再查询一次,发现已经改变
在这里插入图片描述
session代表当前会话,也可以换成GLOBAL,代表全局,level后面则是设置四种隔离级别。

2.验证

准备工作:
创建测试数据库并创建测试表和数据
创建一个学生表在这里插入图片描述

用到两个命令行登录mysql

(1)验证脏读

隔离级别设置为read uncommitted
开始事务查询一次,得到结果
在这里插入图片描述
然后我们在另一个命令行中运行更新的操作,但是不提交事务
在这里插入图片描述
在第一个命令行中再次查询一次,发现结果已改变
在这里插入图片描述
我们把隔离级别换成read committed后再重复上述操作
第一个命令行查询
在这里插入图片描述
然后另一个命令行执行更新的操作,但不提交事务
在这里插入图片描述
切回第一个命令行再次查询,发现值没有改变
在这里插入图片描述
第二个命令行执行commit提交事务,再用第一个命令行查询,发现值改变了
在这里插入图片描述

(2)验证不可重复读

开启事务查询
在这里插入图片描述
另一个命令行进行更新
在这里插入图片描述
再次查询发现数据没有变化,说明没有发生脏读
在这里插入图片描述
我们提交更新的事务,再次查询,发现数据更改了
在这里插入图片描述
三次查询的数据不一致,这就是不可重复读。当我们把隔离级别设置为repeatable read时就会发现同一事务三次查询的数据是一样的,把事务提交后再查询,数据发生了改变。

(3)验证幻读

查询id为3的数据,返回为空
在这里插入图片描述
在另一个命令行中添加id为3的数据并提交事务
在这里插入图片描述
切回第一个命令也添加id为3的数据,发现主键重复了
在这里插入图片描述
再查询一次还是为空
在这里插入图片描述
这就是幻读。
我们把隔离级别换成serializable,查询id为4的数据
在这里插入图片描述
另一个命令行中添加数据
在这里插入图片描述
不难发现光标一直在闪烁,是因为阻塞了,在等前面的事务执行完成,长时间没提交的话会报错超时
在这里插入图片描述
在第一个命令行中进行数据的添加并提交
在这里插入图片描述
这时候第二个命令行就会报错主键已存在
在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:36:32  更:2022-02-28 15:41:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:04:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码