mysql隔离级别验证_MySQL事务隔离级别以及验证

9521e9eea535d721b88a08dab05d267a.png

查询初始数据

50a93b7f7f39ecf463a19aa2070ece62.png

开启A事务  并做更新操作

a7f295e60e0ae9b5bb3c3f9f1f4bf3f1.png

7ad9e41e989510e688e2b5fb168630a4.png

再另一端 B开始另一个事务查询 事务级别设置为读未提

62a617cab6b9534993ae95d2916995cf.png

查询到事务未提交的数据  a的count修改为3 但是没有提交

8e227c90f8fd44a2b98455720ed1094a.png

2 第二个级别 读已提交 避免脏读问题 但是有不可重复读问题

回滚数据 修改隔离级别 确保都是 读已提交级别

客户端A

475de9dc092f1535af0d3b339ecb593e.png

客户端B

8f934477f9c5de7116ed21dce1871024.png

72209fd9f9423cdf70eac32a2b77df99.png

验证 脏读问题

客户端A

d89fec4b04b92f8f4114a6a7564f2f17.png

客户端B  查询出结果 没有脏读问题

392c0fa5986c7b532e784e9436e0d347.png

A提交事务 B再查询

86d9cd0444c74c2f363d186fbc11a214.png

a882c22a749a34717528028fd9eabea5.png

测试不可重复读问题

A客户端 开始事务 先进行一次查询  仍然设置为读已提交的隔离级别

6cc87ed93bfe407fac271b34b0f22775.png

此时 A客户端 没有提交事务 开启B客户端 做更新操作

81865a843f9d4a5bdfd87a6b79731a17.png

此时A客户端再次查询 结果不一样  在一个事务中 两次查询不一样

8694fcfdcd91f7702a4bcd02f14108cf.png

3 第三个级别 可重复读  避免 不可重复读问题;

确保客户端A 和 客户端B都是 可重复读的隔离级别

6ec7859bde5be84a6ea669675d385eb8.png

客户端A 第一次查询

79f801f0c3b9cb44d0b0e8f55f2ef39d.png

客户端B 开启事务 并更新 然后 提交事务

23391e81b927cf49b1291067533d1bb4.png

这时 客户端A 再次查询数据 仍然是15 所以 避免了不可重复读的问题

f8a4285c7782a66b6d504bb49d69f408.png

测试幻读问题

同样保持之前的数据 客户端B开始事务 插入数据

客户端B

adf6d14b51dc4f98b7ec6c3d840da73d.png

此时 客户端A再次查询 还是一样

f63126be61214b3bb6c446fc03bede87.png

经过查询  据说来源于 MySQL技术内幕 :InnoDB存储引擎

之前提到一般情况下MySQL的InnoDB引擎在可重复读的情况下是没法保证不出现幻读的,但实际情况是MySQL可以通过加锁来防止幻读的出现,这种锁定通过Next-key机制来实现,是属于记录锁和间隙锁(Gap锁)的结合。

《MySQL技术内幕:InnoDB存储引擎》-第六章:锁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

登录样式:log4j 2,上下文,自动清除…全部不附加任何字符串!

日志记录-保持操作的时间跟踪-对于任何关键任务系统,无论大小,都至关重要。 我们的Project-X框架也是如此 ,这就是为什么我们希望从一开始就正确地做到这一点。 基于我们在传奇的UltraESB上的登录经验, 上下文日志记录&#xff0…

python37安装失败_Linux 安装Python37

1、下载python3.7.0https://www.python.org/downloads/release/python-370/2、创建Linux的python37目录mkdir /usr/local/python373、解压python3.7.0源码tar zxvf python3.7.0.tar.zg4、配置编译参数./configure --prefix/usr/local/python375、make6、make install注意&#…

python string模块template_Python标准库笔记(1) — string模块

String模块包含大量实用常量和类,以及一些过时的遗留功能,并还可用作字符串操作。1. 常用方法常用方法描述str.capitalize()把字符串的首字母大写str.center(width)将原字符串用空格填充成一个长度为width的字符串,原字符串内容居中str.count…

注意力机制可视化_目标跟踪中的(STAM)时空注意力机制

目标跟踪分为单目标跟踪和多目标跟踪,单目标跟踪较为简单,这里我们只讨论多目标跟踪。多目标跟踪的遮挡问题多目标跟踪时特别容易发生目标间的相互遮挡,从而导致严重的预测偏移问题,如下图所示:红色框的行人在和蓝色框…

byteman_使用Byteman和JUnit进行故障注入

byteman我们的应用程序独立存在的时间已经很久了。 如今,应用程序是一种非常复杂的野兽,它们使用无数的API和协议相互通信,将数据存储在传统或NoSQL数据库中,通过网络发送消息和事件……例如,您多久考虑一次例如数据库…

java动态扩展_java栈内存动态扩展要怎么理解?要如何实现?

小伙伴们知道如何在java栈中内存动态扩展吗?这是虚拟机中的一个概念,下面让我们一起来看看该如何实现吧。一、内存概念在java中,我们一般会简单把java内存区域划为两种:堆内存与栈内存。其实这种划分是比较粗粒度的。其中栈内存就是指的是虚…

python 爬虫热搜_Python网络爬虫之爬取微博热搜

微博热搜的爬取较为简单,我只是用了lxml和requests两个库1.分析网页的源代码:右键--查看网页源代码.从网页代码中可以获取到信息(1)热搜的名字都在的子节点里(2)热搜的排名都在的里(注意置顶微博是没有排名的!)(3)热搜的访问量都在的子节点里…

优盘复制进来为空_为何电脑上的文件夹一复制到U盘里就变成空文件夹了?

(格式化后的卡在恢复前千万不要往里面存东西,因为这样会覆盖你想恢复的内容,如果你不小心存东西了也不要放弃,只不过恢复的机率会变小),下面开始:::在百度里输入Easy recover 软件找到后下载安装到电脑上,然后将内存卡与电脑连接,打开Easy recover 软件,首次打开时软件会分析系…

Spring Cloud教程–使用Spring Cloud Bus自动刷新配置更改

问题 在上一篇文章Spring Cloud Config Server简介 ( http://sivalabs.in/2017/08/spring-cloud-tutorials-introduction-to-spring-cloud-config-server/ )中,我们已经了解了如何使用Spring Cloud配置服务器。 但是,问题是要重新…

js给标签添加属性和值_jquery节点属性

一.节点操作1.DOM内容节点操作:​ ①innerHTML属性:设置或获取文本的内容(普通文本和标签)。​ ②innerText属性:设置或获取文本的内容(普通文本),存在兼容性问题。2.jQuery内容节点…

sci translate好用吗_228个学科分类对应12000+本SCI和SSCI期刊,总有你要的那款!

最近有很多小伙伴询问选刊的问题,而且都是非常具体的学科方向,我们的小编虽然非常热心且礼貌的回答“近期安排”,但其实我们也感觉到鸭梨山大:根据WOS最新一期(2020/9/21)名单公布,WOS目前总共收录了12266本…

java 反射 属性顺序_java反射得到的方法数组的顺序

展开全部看了下你好像需要set和get方法,如果你知道属性的名字的话不需要遍历可以这样获取,这个是我以前的demo的一个32313133353236313431303231363533e58685e5aeb931333332633561片段:Class clazzClass.forName("com.demo.reflectdemo.Student&quo…

arrays.sort(._Arrays.sort与Arrays.parallelSort

arrays.sort(.我们都使用Arrays.sort对对象和原始数组进行排序。 此API在下面使用合并排序或Tim排序对内容进行排序,如下所示: public static void sort(Object[] a) {if (LegacyMergeSort.userRequested)legacyMergeSort(a);elseComparableTimSort.sor…

python冒泡排序函数_python冒泡排序-Python,冒泡排序

arr[7,4,3,67,34,1,8].defbubble_sort:最近在学习Python,下面是我的一些笔记冒泡排序实现思路: 使用双重for循环,内层变量为i, 外层为j,在内层循环中不断的比较相邻的两个值(i, i1)的大小,如果i1的值大于i的…

适用于Idea的面向现代TDD的Java 8 JUnit测试模板(带有Mockito和AssertJ)

使用类似BDD的语法,Java 8和Mockito-AssertJ二重奏为Idea调整JUnit测试类模板。 本文涵盖的主题似乎很简单。 但是,根据我的培训师经验,我知道(不幸的是)这不是常见的做法。 因此,我决定写这篇简短的博客文…

python编程的基本方法有哪些_Python编程中常用的基础知识有哪些?

今天小编要跟大家分享的文章是关于Python编程中常用的基础知识有哪些?正在从事Python相关工作的小伙伴们,来和小编一起看一看本篇文章,希望本篇文章能够对大家有所帮助。1、正则表达式替换目标: 将字符串 line 中的 overview.gif 替换成其他字符串>&…

java取网页源码_Java获取任意http网页源代码的方法

本文实例讲述了JAVA获取任意http网页源代码。分享给大家供大家参考,具体如下:JAVA获取任意http网页源代码可实现如下功能:1. 获取任意http网页的代码2. 获取任意http网页去掉HTML标签的代码Webpage类:/*** 网页操作相关类*/packag…

python数据结构算法优势_Python数据结构与算法(一)----- 算法效率

一.引入先来看一道题:如果abc1000, 且a2b2c^2(a,b,c为自然数),如何求出所有a,b,c可能的组合?(1) 枚举法import timestart_time time.time()for a in range(0,1001):for b in range(0,1001):for c in range(1,1001):if abc1000 and a**2b**2 …

Java编程字符逆序输出_用JAVA编写一程序:从键盘输入多个字符串到程序中,并将它们按逆序输出在屏幕上。...

展开全部代码如下:import java.util.Scanner;public class ScannerDemo{public static void main(String[] args) throws Exception{Scanner scannew Scanner(System.in);System.out.println("请输入内容:");String strscan.nextLine();char[]…

glassfish 4配置_自己构建GlassFish 4.0快照

glassfish 4配置这篇文章是关于自己发布GlassFish 4.0快照的,其中包括一些黑客。 我找到了GlassFish FullBuild的官方说明,然后决定自己构建服务器。 有时,您可能不想等待团队升级GlassFish构建文件。 在本条目中,我将Artifactory…