mysql堵塞等级_MySQL 事务隔离级别

e71d0df84441267456ee6a72e11bf0bb.png

前言

简单来说,数据库事务就是保证一组数据操作要么全部成功,要么全部失败。在 MySQL 中,事务是在引擎层实现的。原生的 MyISAM 引擎不支持事务,也是为什么 InnoDB 会取代它的重要原因之一。

隔离性与隔离级别

当数据库上有多个事务同时执行的时候,根据隔离级别的不同,可能会出现脏读、幻读和不可重复读。标准隔离级别包括读未提交、读提交、可重复读和串行化。

读未提交

如果用这种隔离级别,事务执行的时候会读到其他未提交事务的数据,我们称为脏读。

客户端A

start transaction;

update users set name = 'hello' where id = 1;

select * from users where id = 1; #此时可以读到 name,更新为hello

客户端B

start transaction;

select * from users where id = 1; #此时读到 name为hello

在此隔离级别下,客户端 B 读到了客户端 A 还未提交的事务即还未 commit 的事务,即产生的脏读现象。

读提交

如果用这种隔离级别,事务执行的时候会读到其他已提交事务的数据,我们称为不可重复读。

客户端A

start transaction;

update users set name = 'hello' where id = 1;

commit;

客户端B

start transaction;

select * from users where id = 1; #此时 name不为hello

#此时客户端A 完成 commit

select * from users where id = 1; #此时 name为hello

在此隔离级别下,客户端 B 读到了客户端 A 完成提交的事务,产生了不可重复读现象。

可重复读

在同一个事务里,SELECT 语句获得的结果是基于事务开始时间点的状态,同一个事务中 SELECT 语句得到的结果是一样的,但是会有幻读现象。

客户端A

start transaction;

select * from users; #为空

#此时客户端B 完成commit 操作

select * from users; #还是为空

insert into users(id, name) value (1, 'hello') #报主键冲突

客户端B

start transaction;

select * from users; #为空

insert into users(id, name) values (1, 'hello');

commit;

在此隔离级别下,会产生幻读现象。

串行化

在该事务级别下,事务都是串行顺序执行的,避免了脏读,不可重复读,幻读问题。

客户端A

start transaction;

insert into users(id, name) values (1, 'hello');

commit;

客户端B

start transaction;

select * from users; #会一直堵塞住,直到客户端A 完成提交

本文链接:http://www.yunweipai.com/36489.html

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

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

相关文章

水晶报表取消输入密码最后测试结果

哈哈,找了很多资料终于解决了。 //添加引用 using CrystalDecisions.Shared ;//负责解释TableLogOnInfo类 using CrystalDecisions.CrystalReports .Engine ;//负责解释ReportDocument类private void Page_Load(object sender, System.EventArgs e) //然后在水晶报表…

Java 运算符、表达式、语句

文章目录1. 运算符2. 表达式3. 语句1. 运算符 赋值运算 , -, *, /, % 算术运算 , -, !, ~ 一元运算 关系运算 >, <, >, <, , ! 返回布尔 递增&#xff0c;递减--&#xff0c;支持&#xff08;float&#xff0c;double&#xff09;1, -1 逻辑运算 &&…

安装mysql没有提示设置密码_18.04安装mysql没有提示输入密码

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼MySQL 5.7不再弹出root密码设置sudo vi /etc/mysql/debian.cnf显示&#xff1a;# Automatically generated for Debian scripts. DO NOT TOUCH![client]host localhostuser debian-sys-maintpassword fPw**********22socket /v…

arrays中copyof复制两个数组_Java的数组初识和拷贝用法

方法重载&#xff1a;方法名称相同&#xff0c;参数列表不同。不能有两个名字相同、参数类型相同&#xff0c;返回值不同的方法。在进行方法重载时&#xff0c;方法的返回值一定相同&#xff01;&#xff01;&#xff01;方法递归特点&#xff1a;1.必须有结束条件2.每次递归处…

你不知道的 字符集和编码(编码字符集与字符集编码)

我的上篇文章&#xff0c;有朋友提出字符集和编码的区别&#xff0c;我在此立文和大家讨论下 常说的字符集和编码区别&#xff0c;其实就是编码字符集和字符集编码的区别&#xff0c;其实&#xff0c;单单如果只是说字符集&#xff0c;没有任何编码的概念的话&#xff0c;那么字…

Java 数组及多维数组

注意一点&#xff0c;数组每行可以不等长可以两种写法&#xff0c;直接枚举初始化&#xff0c;或者new type [len1][len2]... import java.util.Arrays;public class Myarray {public static void main(String[] args){// 一维数组声明int arr1 [] new int[3];int [] arr2 {…

迷宫搜索问题最短路_【算法常用模板】总结(更新中)

搜索类图类排序类并查集数学类位运算Part1 搜索类bfs 求迷宫问题最短路径(未验证)#include#includeusing namespace std;//用于遍历的结构 (可以添加题目所要求的信息)typedef struct Node{int x,y;int step;}NODE;const int NUM 100; //地图最大范围&#xff0c;根据要求具体…

hook 监控文件 c++_技术分享 | Linux 入侵检测中的进程创建监控

作者简介&#xff1a;张博&#xff0c;网易高级信息安全工程师。0x00 简介在入侵检测的过程中&#xff0c;进程创建监控是必不可少的一点&#xff0c;因为攻击者的绝大多数攻击行为都是以进程的方式呈现&#xff0c;所以及时获取到新进程创建的信息能帮助我们快速地定位攻击行为…

caffe模型文件解析_Caffe ImageData神经网络基本示例无法解析模型文件

我正在尝试使用我使用caffe库从CSV文件准备的 **_图像数据_** 构建神经网络的最小示例。I am trying to build a minimal example of a neural network with **_IMAGE DATA_** that I have prepared from a CSV file using the caffe libraries.我的原始文本如下&#xff1a;\[…

付忠庆的练习小笔记-Codeforces #277 Div2 C

原题链接 http://codeforces.com/contest/486/problem/C 这个C题显然更水一些 步数可以分为两种 上下一种 左右一种 总步数最小 上下最小左右最小 先讨论上下最小 就是从两个方向去由字母1到字母2 min(dis(A,B),26-dis(A,B)); 然后讨论左右最小 pos是起始指针的位置 1-统一在…

Java 类的封装、继承、多态

// 封装、继承、多态 class Person1{String name;int age;private int height;// 私有 封装public Person1(String name, int age){this.name name;this.age age;}public void talk(){System.out.println("This is father class talk() !");}public void setHeight…

hive 创建表_2min快速了解,Hive内部表和外部表

在了解内部表和外部表区别前&#xff0c;我们需要先了解一下Hive架构 &#xff1a;大家可以简单看一下这个架构图&#xff0c;我介绍其中要点&#xff1a;Hive的数据分为两种&#xff0c;一种为普通数据&#xff0c;一种为元数据。元数据存储着表的基本信息&#xff0c;增删改查…

C#微信公众号开发系列教程二(新手接入指南)

此系列前面已经更新了两篇博文了&#xff0c;都是微信开发的前期准备工作&#xff0c;现在切入正题&#xff0c;本篇讲解新手接入的步骤与方法&#xff0c;大神可直接跳过&#xff0c;也欢迎大神吐槽。 微信公众号开发系列教程一&#xff08;调试环境部署&#xff09; 微信公众…

oracle增加字段为主键自增_在 Oracle 中设置自增列

如果你经常使用 MySQL&#xff0c;你肯定对 AUTO_INCREMENT 非常熟悉&#xff0c;因为经常要用到它。一、什么是自增列 &#xff1f;自增列是数据库中值随插入的每个行自动增加的一列。它最常用于主键或 ID 字段&#xff0c;这样每次增加一行时&#xff0c;不用指该字段的值&am…

Java 抽象类、接口

abstract class 抽象类定义规则如下: (1) 抽象类和抽象方法都必须用 abstract 关键字来修饰。 (2) 抽象类不能被直接实例化&#xff0c;也就是不能用new关键字去产生对象。 (3) 抽象方法只需声明&#xff0c;而不需实现。 (4) 含有抽象方法的类必须被声明为抽象类&#xff0c…

fastdfs windows部署_Go在windows下编译Linux可执行文件

欢迎关注我的头条号&#xff1a;Wooola&#xff0c;专注于Java、Golang、微服务架构&#xff0c;致力于每天分享原创文章、快乐编码和开源技术。前言最近楼主做了一个滑块验证码登录功能&#xff0c;但有个问题&#xff0c;悲观估计一天大约会产生两百多G临时图片放在fastdfs文…

python按索引删除字符串,基于特定的索引字符串值选择记录,然后通过python删除后续字段...

I have a .csv file named file01.csv that contains many records. Some records are required and some are not. I find that the required records has a string variable “Mi”, but it is not exist into the unnecessary records. So, I want to select the required r…

我们并没有觉得MapReduce速度慢,直到Spark出现

learn from 从0开始学大数据&#xff08;极客时间&#xff09; Spark 拥有更快的执行速度 更友好的编程接口 迅速抢占 MapReduce 的市场份额&#xff0c;成为主流的大数据计算框架 val textFile sc.textFile("hdfs://...") // 根据 HDFS 路径生成一个输入数据 RDD v…

python远程调用摄像头_Python设置Socket代理及实现远程摄像头控制的例子

为python设置socket代理首先,你得下载SocksiPy这个.解压出来之后里面会有一个socks.py文件.然后你可以把这个文件复制到python安装目录里面的Lib\site-packages中.或者把这个文件复制到程序所在的目录中. 然后就可以再程序中使用socket代理来编写程序了. 下面是示例代码 import…

基于ArcEngine与C#的鹰眼地图实现

鹰眼图是对全局地图的一种概略表达&#xff0c;具有与全局地图的空间参考和空间范围。为了更好起到空间提示和导航作用&#xff0c;有些还具备全局地图中重要地理要素&#xff0c;如主要河流、道路等的概略表达。通过两个axMapControl控件&#xff0c;主控件axMapControl 1和鹰…