1.设置和验证MySQL数据库的隔离级别
- 登录数据库
mysql -u root - p - 新建用户,各启动一个事物,用于同时操作数据库表中数据
create user tom identified by 'tom';
然后同时再用该用户启动MySQL。这样就能通过使用两个事物操作数据库进行验证了
mysql -u tom -p - 新建的tom用户是没有权限对其他数据库进行操作的,因此要赋予权限。通过系统用户对该tom用户赋予权限:
grant select,insert,update,delete on test.* to tom@localhost identified by 'tom';
注意:MySQL8.0不支持这种写法了,需要把identified by 'tom'去掉。前面默认创建的主机是%,即任意主机,因此要把localhost改成'%'; - 两个用户分别
use test;
下面是我创建的test数据库中的user_table表:

root-->select * from user_table where user = 'CC';
tom-->select * from user_table where user = 'CC';
默认情况下,这两个DML操作都自动提交了。因此这两个语句事实上是两个事物。 - 让其执行完DML之后,不自动提交
set autocommit = false; - 先查看其隔离级别
select @@tx_isolation;
MySQL8.0后是select @@transaction_isolation;-->REPEATABLE-READ;
7.验证隔离级别
root-->select * from user_table where user = 'cc';
tom-->update user_table set balance = 3000 where user = 'cc';
tom-->select * from user_table where user = 'cc';-->3000
root-->select * from user_table where user = 'cc';-->2000
因为此时两者都没有提交,这里就验证了避免脏读的问题;
tom-->commit;
root-->select * from user_table where user = 'cc';-->2000
这里tom提交,说明数据库已经改了,但是root查询到的仍然是2000,验证了避免不可重复读的问题;
若想root读到3000,只需root提交之后,再次查询即可。(提交意味着当前事物已经结束了) - 修改隔离级别
设置数据库系统的全局的隔离级别
set global transaction isolation level read committed;
然后需要把当前连接断掉,重新进入MySQL才能显示已修改的隔离级别。
9.再次执行5、6、7中代码进行验证既可。
10.再次修改隔离级别为read uncommitted进行验证。
1.设置和验证MySQL数据库的隔离级别的更多相关文章
- Mysql数据库的隔离级别
Mysql数据库的隔离级别有四种 1.read umcommitted 读未提交(当前事务可以读取其他事务没提交的数据,会读取到脏数据) 2.read committed 读已提交(当前事务不能读 ...
- MySQL - 数据库的隔离级别
MySQL - 数据库的隔离级别 隔离级别 脏读(Dirty Read) 不可重复读(NonRepeatable Read) 幻读(Phantom Read) 未提交读(Read uncommitte ...
- Mysql数据库事务隔离级别
事务(transaction)是数据库管理系统的执行单位,可以是一个数据库操作(如Select操作)或者是一组操作序列.事务ACID属性,即原子性(Atomicity).一致性(Consistency ...
- mysql事务之一:MySQL数据库事务隔离级别(Transaction Isolation Level)及锁的实现原理
一.数据库隔离级别 数据库隔离级别有四种,应用<高性能mysql>一书中的说明: 然后说说修改事务隔离级别的方法: 1.全局修改,修改mysql.ini配置文件,在最后加上 1 #可选参数 ...
- MySQL数据库的隔离级别之可重复读为什么能够有效防止幻读现象的出现
可重复读隔离级别,不允许存在幻读,该隔离级别之所以能够有效防止幻读现象的出现,是因为可重复读这个隔离级别有用到GAP锁(间隙锁).下面我们以解析SQL语句为切入点,来解释个中原因. 前提条件:①数据库 ...
- mysql数据库——事务隔离级别
四种隔离级别: 一:READ UNCOMMITTED(未提交读) 事务可以读取其他事务未提交的数据,称为脏读 二:READ COMMITTED(提交读) 一个事务开始时,只能"看见" ...
- MySQL数据库事务隔离级别(Transaction Isolation Level)
转自: http://www.cnblogs.com/zemliu/archive/2012/06/17/2552301.html 数据库隔离级别有四种,应用<高性能mysql>一书中的 ...
- [转]MySQL 数据库事务隔离级别
然后说说修改事务隔离级别的方法: 1. 全局修改,修改 mysql.ini 配置文件,在最后加上 1 #可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATAB ...
- [原创]java WEB学习笔记78:Hibernate学习之路---session概述,session缓存(hibernate 一级缓存),数据库的隔离级别,在 MySql 中设置隔离级别,在 Hibernate 中设置隔离级别
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
随机推荐
- C++算法代码——统计数字
题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1109 题目描述 某次科研调查时得到了n个自然数,每个数均不超过1500000000( ...
- 链表、栈、队列、KMP相关知识点
链表.栈与队列.kmp; 数组模拟单链表: 用的最多的是邻接表--就是多个单链表: 作用:存储树与图 需要明确相关定义: 为什么需要使用数组模拟链表 比使用结构体 或者类来说 速度更快 代码简洁 算法 ...
- winform导出csv
public void ExportToSvc1(string strFileName) { string strPath = strFileName + ".csv"; Stri ...
- HTML5中对于块级元素和行内元素的总结
转自:https://www.cnblogs.com/iverson666/p/9169274.html块级元素:块级大多为结构性标记 <address>...</adderss&g ...
- java高并发编程基础之AQS
引言 曾经有一道比较比较经典的面试题"你能够说说java的并发包下面有哪些常见的类?"大多数人应该都可以说出 CountDownLatch.CyclicBarrier.Sempah ...
- vue之下拉菜单Dropdown的使用
通过组件slot来设置下拉触发的元素以及需要通过具名slot为dropdown 来设置下拉菜单.默认情况下,下拉按钮只要hover即可,无需点击也会显示下拉菜单. <el-dropdown> ...
- 都学Python了,C++难道真的用不着了吗?
本文首发 | 公众号:lunvey 人人都在学Python,我还学C++吗? 现在只要提及编程语言,得到的答复都是:学Python,有未来! 大家可能有一个误区,数据分析带火了Python,让人们 ...
- SpringCloud(三):SpringCloud快速开发入门
3-1. 搭建和配置一个服务提供者 我们知道,SpringCloud 构建微服务是基于 SpringBoot 开发的.(如果SpringBoot不会的可以先看SpringBoot专栏) 1. 创建一 ...
- 使用createrepo构建本地yum仓库
rpm包安装的时候会有很多软件会出现因为其他依赖包没有,而导致安装失败的情况.一般可以连接外网的时候我们直接使用 yum 进行安装,可以为我们解决依赖包关系,但是很多工作环境下是没有外网的,内网情况下 ...
- Java实现解压缩文件和文件夹
一 前言 项目开发中,总会遇到解压缩文件的时候.比如,用户下载多个文件时,服务端可以将多个文件压缩成一个文件(例如xx.zip或xx.rar).用户上传资料时,允许上传压缩文件,服务端进行解压读取每一 ...