一、实验数据:

建表语句:

CREATE TABLE `isolation` (
`id` int(11) NOT NULL,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_croatian_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

创建表名为:isolation的表,其中有两个字段,一个 id ,一个 name

原始数据:

insert into ISOLATION values(1,'name1'),(2,'name2'),(3,'name3');

插入三条记录。

二、准备:

分别打开两个mysql客户端A 、B

查看当前客户端隔离级别

SELECT @@tx_isolation

mysql InnoDB默认隔离级别为可重复读。

设置B客户端不自动提交:

查看自动提交设置:

show session variables like 'autocommit';

mysql InnoDB默认自动提交。

设置不自动提交:

set session autocommit=0;

客户端设置不自动提交事物成功。

一、脏读实验开始---------------------------------------

设置A的隔离级别为读未提交:

set session transaction isolation level read uncommitted;

客户端B启动一个事物

发现update的数据没有提交就读到了,回滚之后导致脏读。

发现insert的数据没有提交就读到了,回滚之后导致脏读。

发现delete的数据没有提交就读到了,回滚之后导致脏读。

脏读实验结束---------------------------------------

结论,脏读会读没有提交的update insert delete。

读已提交实验开始---------------------------------------

设置A的隔离级别为读已提交:

set session transaction isolation level read committed;

update的时候------>>>发现解决了脏读,但是在一个事物里面,两次查询的结果不一致,即解决不了重复读的问题

insert的时候------>>>发现解决了脏读,但是在一个事物里面,两次查询的结果不一致,即解决不了重复读的问题

delete的时候------>>>发现解决了脏读,但是在一个事物里面,两次查询的结果不一致,即解决不了重复读的问题

读已提交实验结束---------------------------------------

结论:解决了脏读,但是一个事物里面,同一个查询结果不一致,不能解决重复读的问题。

可重复读实验开始---------------------------------------

数据重新清理一下:

update的时候------>>>在一个事物里面,两次查询直间,读不到另外事物提交的内容,只有提交当前事物,新启事物查询的时候才能查到更新的,即解决不了重复读的问题

delete的时候------>>>在一个事物里面,两次查询直间,读不到另外事物提交的内容,只有提交当前事物,新启事物查询的时候才能查到更新的,即解决不了重复读的问题

insert的时候------>>>在一个事物里面,两次查询直间,读不到另外事物提交的内容,只有提交当前事物,新启事物查询的时候才能查到更新的,即解决不了重复读的问题

可重复读实验结束---------------------------------------

结论:解决了脏读,可重复读,好像mysql 5.7.26在可重复读隔离级别解决了 幻想读的现象(猜测,还没太明白)。

串行化读实验开始---------------------------------------

串行化读实验结束--------------------------------------

结论:串行化后,当一个事物没有提交,另外的事物不能修改对数据进行(update,insert,delete操作)。

mysql事务隔离级别实验的更多相关文章

  1. mysql事务隔离级别、脏读、幻读

    Mysql事务隔离级别本身很重要,再加上可能是因为各大公司面试必问的缘故,在博客中出现的概率非常高,但不幸的是,中国的技术博客要么是转载,要么是照抄,质量参差不齐,好多结论都是错的,对于心怀好奇之心想 ...

  2. MySQL事务隔离级别(一)

    本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做 ...

  3. [51CTO]新说MySQL事务隔离级别!

    新说MySQL事务隔离级别! 事务隔离级别这个问题,无论是校招还是社招,面试官都爱问!然而目前网上很多文章,说句实在话啊,我看了后我都怀疑作者弄懂没!本文所讲大部分内容,皆有官网作为佐证,因此对本文内 ...

  4. 查询mysql事务隔离级别

    查询mysql事务隔离级别 查询mysql事务隔离级别 分类: DB2011-11-26 13:12 2517人阅读 评论(0) 收藏 举报 mysqlsessionjava   1.查看当前会话隔离 ...

  5. MySQL事务隔离级别测试实例

    https://www.cnblogs.com/huanongying/p/7021555.html MySQL事务隔离级别 事务隔离级别 脏读 不可重复读 幻读 读未提交(read-uncommit ...

  6. Mysql事务-隔离级别

    MYSQL事务-隔离级别 事务是什么? 事务简言之就是一组SQL执行要么全部成功,要么全部失败.MYSQL的事务在存储引擎层实现. 事务都有ACID特性: 原子性(Atomicity):一个事务必须被 ...

  7. MySQL事务隔离级别 解决并发问题

    MySQL事务隔离级别 1. 脏读: 骗钱的手段, 两个窗口或线程分别调用数据库转账表,转账后未提交,对方查看到账后,rollback,实际钱没转. 演示方法: mysql默认的事务隔离级别为repe ...

  8. mysql事务隔离级别与设置

    mysql数据库,当且仅当引擎是InnoDB,才支持事务: 1.隔离级别 事务的隔离级别分为:未提交读(read uncommitted).已提交读(read committed).可重复读(repe ...

  9. MySQL事务隔离级别(二)

    搞清楚MySQL事务隔离级别 首先创建一个表 account.创建表的过程略过(由于 InnoDB 存储引擎支持事务,所以将表的存储引擎设置为 InnoDB).表的结构如下: 为了说明问题,我们打开两 ...

随机推荐

  1. PJzhang:python基础入门的7个疗程-two

    猫宁!!! 参考链接:易灵微课-21天轻松掌握零基础python入门必修课-售价29元人民币 https://www.liaoxuefeng.com/wiki/1016959663602400 htt ...

  2. Python基础二--基本控制语句

    基本接触每一种语言,都须要做的:1.print 一个"Hello world!" 2.了解主要的数据类型 3.学习控制语句. 当我们学习控制语句,一般都离不开if,for ,whi ...

  3. hunnu--11545--小明的烦恼——找路径

    小明的烦恼--找路径  Time Limit: 2000ms, Special Time Limit:5000ms, Memory Limit:32768KB Total submit users:  ...

  4. OpenCV中使用SVM简介

    下面这是opencv官方文档中的代码,我加了一部分注释: #include "stdafx.h" #include "opencv2/core/core.hpp" ...

  5. 各种加载效果,适合做加载loading动画效果 Eclipse版

    Animation.rar 链接: http://pan.baidu.com/s/1c0QkOz2 密码: kd57

  6. sanic官方文档解析之Custom Protocols(自定义协议)和Socket(网络套接字)

    1,Custom Protocol:自定义协议 温馨提示:自定义协议是一个高级用法,大多数的读者不需要用到此功能 通过特殊的自定义协议,你可以改变sanic的协议,自定义协议需要继承子类asyncio ...

  7. liberOJ #6173. Samjia 和矩阵 hash+后缀数组

    #6173. Samjia 和矩阵 题目链接  : 点这里 题目描述 给你一个只包含大写字母的矩阵,求有多少本质不同的子矩阵. 输入格式 第一行包含两个整数 nnn , mmm ,表示矩阵 nnn 行 ...

  8. crontab -e 定时任务中的 脚本文件 路径

    crontab -l 57 */1 * * * python /home/data/crontab_chk_url/personas/trunk/plugins/spider/chk_url_stat ...

  9. sql语句,无法绑定由多个部分组成的标识符 "xxx"

    String sql = "select TOP 7 news_id,news_title,news_addtime,news_url from web_news_info a" ...

  10. scrollView 代理方法的实现顺序的些许区别