MySQL-事务隔离级别
事务有四大特性(ACID):原子性,一致性,隔离性和持久性。隔离性一般在事务并发的时候需要保证事务的隔离性,事务并发会出现很多问题,包括脏写,脏读,不可重复读,幻读等等情况。为了保证在不同的情况下都能有良好的隔离性,MySQL定义了四大事务隔离级别。
事务并发没有隔离导致的问题
事务在并发的过程中就会遇到很多问题,例如读取到其他事务尚未提交的数据,上一个时刻和当前时刻读取到不同的结果,其他事务新增记录以后,当前事务查询到的结果多了等等问题。这些问题都是多事务并发时期发生的问题。所以为了保证事务之间能够有比较好的隔离性,就需要划分事务隔离级别。
本节主要表写事务并发发生的各种问题。
脏写
事务A 修改了ID=2的字段c修改为2,事务B 也修改了ID=2的字段c修改为3。如果此时事务A发生了回滚,那么事务B的修改记录就发生了丢失,事务A脏写了事务B的数据。
这个时候MySQL给出的方案是,在数据被修改的时候加锁,这样就不会发生类似的问题了。事务A 修改了ID=2的字段c修改为2,事务A尚未提交的时候,事务B就会被阻塞,直到事务A被提交,或者回滚。
脏读

所谓的脏读就是读未提交,一个事务还没有提交的时候,它做的编程就能被其他事务看见。如果开启读未提交,那么按照上图,V1=2,V2=2,V3=2。
不可重复读
所谓的不可重复读,指的是在同一个事务执行期间,读到了不同的数据,重复读取同一个数据,读到不同的结果,就是发生了不可重复读的问题。例如,开启读已提交的隔离级别,就会发生不可重复读的问题。那么按照上图,V1=1,V2=2,V3=2。
幻读
所谓的幻读就是,事务新增记录以后,其他事务发现这个事务新增了某条记录,就是发生了幻读现象。对于幻读问题,可以对发生锁竞争的区域加锁,从而保证这个区域内不会新增数据,保证事务执行是串行化的。当然串行化可以保证不可重复读,但是原理和不可重复读的原理不一致,上面说到为了保证串行化需要对发生竞争的行或者区域加锁,那么不可重复读的原因就是发生了竞争,解决办法就是在事务A读写这行的时,加入读或者写锁,导致事务B阻塞无法继续执行,事务A结束,事务B在执行。串行化实质上就是一次只有一个事务在执行,这样牺牲了效率,但是换来了更高的隔离级别。
同样的,如果开启串行化的隔离级别以后,按照上图,V1=1,V2=2,V3=2。
事务隔离级别
上面已经或多或少提到了事务的隔离级别,事务的隔离级别一共有四种:读未提交(READ UNCOMMITED),读已提交(READ COMMITED),可重复读(REPEATABLE READ)和串行化(SERIALIZED)。
-
读未提交(READ UNCOMMITED)
一个事务还没有提交的时候,它所作的变更就能被其他的事务看到。
-
读已提交(READ COMMITED)
一个事务已经提交后,他做的变成才能被被其他事务看到。
-
可重复读(REPEATED READ)
一个事务的执行过程中看到的数据,总是和这个事务启动的时候看到的数据是一致的。
-
可序列化(SIRIALIZABLE)
对行加读写锁,出现锁冲突的时候,一个事务必须等另一个事务完成后才能继续执行。
相关文章:
MySQL-事务隔离级别
事务有四大特性(ACID):原子性,一致性,隔离性和持久性。隔离性一般在事务并发的时候需要保证事务的隔离性,事务并发会出现很多问题,包括脏写,脏读,不可重复读,…...
对于简单的HTML、CSS、JavaScript前端,我们可以通过几种方式连接后端
1. 使用Fetch API发送HTTP请求(最简单的方式): //home.html // 示例:提交表单数据到后端 const submitForm async (formData) > {try {const response await fetch(http://your-backend-url/api/submit, {method: POST,head…...
从入门到精通:Postman 实用指南
Postman 是一款超棒的 API 开发工具,能用来测试、调试和管理 API,大大提升开发效率。下面就给大家详细讲讲它的安装、使用方法,再分享些实用技巧。 一、安装 Postman 你能在 Postman 官网(https://www.postman.com )下…...
error: conflicting types for ‘SSL_SESSION_get_master_key’
$ make make all-am make[1]: Entering directory ‘/home/linuxuser/tor’ CC src/lib/tls/libtor_tls_a-tortls_openssl.o In file included from src/lib/tls/tortls_openssl.c:61: ./src/lib/tls/tortls_internal.h:55:8: error: conflicting types for ‘SSL_SESSION_get_…...
sql sqlserver的特殊函数COALESCE和PIVOT的用法分析
一、COALESCE是一个返回参数中第一个非NULL值的函数, 列如:COALESCE(a,b,c,d,e);可以按照顺序取abcde,中的第一个非空数据,abcde可以是表达式 用case when 加ISNULL也可以实现,但是写法复杂了…...
智能猫眼实现流程图
物理端开发流程图 客户端端开发流程图 用户功能开发流程图 管理员开发流程图...
c/c++蓝桥杯经典编程题100道(19)汉诺塔问题
汉诺塔问题 ->返回c/c蓝桥杯经典编程题100道-目录 目录 汉诺塔问题 一、题型解释 二、例题问题描述 三、C语言实现 解法1:递归法(难度★) 解法2:迭代法(难度★★★) 四、C实现 解法1࿱…...
蓝桥杯单片机大模板(西风)
#include <REGX52.H> #include "Key.h" #include "Seg.h" //变量声明区 unsigned char Key_Val,Key_Down,Key_Old;//按键扫描专用变量 unsigned char Key_Slow_Down;//按键减速专用变量 10ms unsigned int Seg_Slow_Down;//按键扫描专用变量 500ms …...
【Java基础】静态多态和动态多态
多态(Polymorphism) 多态是面向对象编程(OOP)中的核心概念之一,它指的是 同一接口,多个实现方式。在 Java 中,多态主要有 两种形式: 静态多态(Static Polymorphism&…...
Android 10.0 移除wifi功能及相关菜单
介绍 客户的机器没有wifi功能,所以需要删除wifi相关的菜单,主要有设置-网络和互联网-WLAN,长按桌面设置弹出的WALN快捷方式,长按桌面-微件-设置-WLAN。 修改 Android10 上直接将config_show_wifi_settings改为false,这样wifi菜单的入口就隐…...
【LeetCode Hot100 子串】和为 k 的子数组、滑动窗口最大值、最小覆盖子串
子串 1. 和为 k 的子数组题目描述解题思路主要思路步骤 时间复杂度与空间复杂度代码实现 2. 滑动窗口最大值题目描述解题思路双端队列的原理:优化步骤: Java实现 3. 最小覆盖子串题目描述解题思路滑动窗口的基本思路:具体步骤:算法…...
【kafka系列】Kafka如何实现高吞吐量?
目录 1. 生产者端优化 核心机制: 关键参数: 2. Broker端优化 核心机制: 关键源码逻辑: 3. 消费者端优化 核心机制: 关键参数: 全链路优化流程 吞吐量瓶颈与调优 总结 Kafka的高吞吐能力源于其生…...
foobar2000设置DSP使用教程及软件推荐
foobar2000安卓中文版:一款高品质手机音频播放器 foobar2000安卓中文版是一款备受好评的高品质手机音频播放器。 几乎支持所有的音频格式,包括 MP3、MP4、AAC、CD 音频等。不论是经典老歌还是最新的流行音乐,foobar2000都能完美播放。除此之…...
【JAVA工程师从0开始学AI】,第四步:闭包与高阶函数——用Python的“魔法函数“重构Java思维
副标题:当严谨的Java遇上"七十二变"的Python函数式编程 历经变量战争、语法迷雾、函数对决,此刻我们将踏入Python最迷人的领域——函数式编程。当Java工程师还在用接口和匿名类实现回调时,Python的闭包已化身"智能机器人"…...
【R语言】回归分析与判别分析
一、线性回归分析 1、lm()函数 lm()函数是用于拟合线性模型(Linear Models)的主要函数。线性模型是一种统计方法,用于描述一个或多个自变量(预测变量、解释变量)与因变量(响应变量)之间的关系…...
AllData数据中台核心菜单十三:数据湖平台
🔥🔥 AllData大数据产品是可定义数据中台,以数据平台为底座,以数据中台为桥梁,以机器学习平台为中层框架,以大模型应用为上游产品,提供全链路数字化解决方案。 ✨奥零数据科技官网:…...
Spring Cloud Gateway中断言路由和过滤器的使用
一,Gateway概念 Spring Cloud Gateway(简称 Gateway)是一个基于 Spring WebFlux 的 API 网关解决方案,旨在为微服务架构中的客户端提供路由、负载均衡、认证、限流、监控等功能。它作为微服务架构中的流量入口,通常位…...
Android 13 上通过修改 AOSP 拦截 SystemUI 音量调节事件
定位关键代码SystemUI 的音量调节逻辑主要集中在以下类中: VolumeDialogController.java:负责与 AudioService 交互。 VolumeDialogImpl.java:处理 UI 交互事件(如按钮点击)。 PhoneWindowManager.java:处理物理按键事件(如音量键)。 拦截音量调节事件 以 VolumeDialog…...
AcWing 798. 差分矩阵
题目来源: 找不到页面 - AcWing 题目内容: 输入一个 n 行 m 列的整数矩阵,再输入 q 个操作,每个操作包含五个整数 x1,y1,x2,y2,c,其中 (x1,y1) 和 (x2,y2)表示一个子矩阵的左上角坐标和右下角坐标。 每个操作都要将…...
Docker 部署 MySQL 8 详细图文教程
🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 仓库主页: GitCode︱ Gitee ︱ Github 💖 欢迎点赞 👍 收藏 ⭐评论 …...
【Python】模式匹配 match语句详解(仅在Python 3.10及以上版本中可用)
文章目录 模式匹配 match语句(仅在 Python 3.10及以上版本 中可用)1. 基本语法2. 基本匹配操作2.1 匹配常量2.2 匹配变量2.3 匹配元组2.4 匹配列表2.5 匹配字典2.6 条件匹配 3. 应用场景 模式匹配 match语句(仅在 Python 3.10及以上版本 中可用) Python 3.10 及以上版本中才引…...
vscode ESP32配置
一、自定义文件组件使用xxxx.c xxxx.h 1: 控制端工程目录创建组件文件夹 》 idf.py -C components create-component User_led 2: 定义组件如果引用指定外部依赖库,当前文件的cmakelists.txt 添加 REQUIRES driver idf_component_register(SRCS "uesr_led.c"INCLU…...
idea 2019.3常用插件
idea 2019.3常用插件 文档 idea 2019.3常用插件idea 2023.3.7常用插件 idea 2019.3常用插件 插件名称插件版本说明1AceJump3.5.9AceJump允许您快速将插入符号导航到编辑器中可见的任何位置。只需按“ctrl;”,键入一个字符,然后在Ace Jump…...
全单模矩阵及其在分支定价算法中的应用
全单模矩阵及其在分支定价算法中的应用 目录 全单模矩阵的定义与特性全单模矩阵的判定方法全单模矩阵在优化中的核心价值分支定价算法与矩阵单模性的关系非全单模问题的挑战与系统解决方案总结与工程实践建议 1. 全单模矩阵的定义与特性 关键定义 单模矩阵(Unimo…...
算法与数据结构(最小栈)
题目 思路 为了返回栈中的最小元素,我们需要额外维护一个辅助栈 min_stack,它的作用是记录当前栈中的最小值。 min_stack的作用: min_stack的栈顶元素始终是当前栈 st 中的最小值。 每当st中压入一个新元素时,如果这个元素小于等…...
KVM设置端口转发
20250217 - 概述 在ubuntu下进行虚拟机开发环境设置,希望外网也能够进行访问, 一开始希望通过桥接的方式来实现,但是发现有些不适配;所以最后使用了 NAT转发的形式。 一开始看的文章[1],在设置路由转发之后…...
openCV中如何实现滤波
图像滤波用于去除噪声和图像平滑,OpenCV 提供了多种滤波器: 1.1. 均值滤波: import cv2# 读取图像 image cv2.imread("example.jpg")# 均值滤波 blurred_image cv2.blur(image, (5, 5)) # (5, 5) 是滤波核的大小 滤波核大小的…...
清影2.0(AI视频生成)技术浅析(二):自然语言处理
清影2.0(AI视频生成)中的自然语言处理(NLP)技术是其核心组件之一,负责将用户输入的自然语言文本转化为机器可以理解的语义表示,从而指导后续的视频生成过程。 一、基本原理 1. 目标 清影2.0的NLP技术旨在将用户输入的自然语言文本转化为机器可以理解的语义表示,从而指…...
五十天精通硬件设计第32天-S参数
系列文章传送门 50天精通硬件设计第一天-总体规划-CSDN博客 目录 1. S参数基础 2. S参数在信号完整性中的作用 3. 单端 vs. 差分S参数 4. S参数的关键特性 5. S参数的获取与使用 6. S参数分析中的常见问题 7. 实际案例:PCIe通道分析 8. 工具推荐 总结 信号完整性中…...
AI在网络安全中的应用:构建智能防护体系
AI在网络安全中的应用:构建智能防护体系 大家好,我是你们熟悉的人工智能与Python领域自媒体创作者Echo_Wish。今天我们来聊聊如何用AI技术提升网络安全水平。随着互联网的发展和数字化转型,网络安全威胁日益增多,传统的安全防护手段已经难以应对复杂多变的网络攻击。AI技术…...
