【面试干货】事务的并发问题(脏读、不可重复读、幻读)与解决策略

【面试干货】事务的并发问题(脏读、不可重复读、幻读)与解决策略

  • 一、脏读(Dirty Read)
  • 二、不可重复读(Non-repeatable Read)
  • 三、幻读(Phantom Read)
  • 四、总结


💖The Begin💖点点关注,收藏不迷路💖

在数据库管理系统(DBMS)中,事务的并发执行是提高系统性能的关键。然而,并发执行也带来了一系列的问题,如 脏读、不可重复读和幻读。本文将详细解释这些并发问题,并探讨相应的解决策略。

一、脏读(Dirty Read)

1、定义

脏读是指一个事务读取了另一个事务尚未提交的数据。由于被读取的数据可能由于某些原因被回滚,因此该数据是“脏”的,即不可靠 的。

2、示例

假设 事务A读取了事务B尚未提交的对某个数据行的修改,随后事务B发生错误并执行了回滚操作。此时,事务A读取到的数据就是脏数据,因为它已经不再是数据库中的当前状态

3、解决策略

为了避免脏读,DBMS采用了隔离级别的概念。通过设置不同的隔离级别,可以控制事务之间的可见性。例如,在 可重复读(Repeatable Read)或串行化(Serializable) 隔离级别下,事务只能读取已经提交的数据,从而避免了脏读。

二、不可重复读(Non-repeatable Read)

1、定义

不可重复读 是指在一个事务内,多次读取同一数据,但由于其他事务的修改并提交,导致该事务先后读取到的数据结果不一致。

2、示例

假设事务A两次读取同一数据行,在两次读取之间,事务B修改了该数据行并提交。此时,事务A第二次读取到的数据与前一次不同,即发生了不可重复读

3、解决策略

为了解决不可重复读问题,DBMS同样采用了隔离级别的概念。在 可重复读(Repeatable Read)或串行化(Serializable) 隔离级别下,事务在开始时会获取一个数据快照,并在整个事务过程中始终基于该快照进行读取操作,从而保证了多次读取结果的一致性

三、幻读(Phantom Read)

1、定义

幻读 是指在一个事务内,执行相同的查询操作,但由于其他事务的插入或删除操作并提交,导致该事务两次查询到的结果集不一致

2、示例

假设事务A执行了一个范围查询(如查询年龄大于20且小于30的所有用户),在查询结果返回后,事务B插入了一个年龄为25的新用户并提交此时,如果事务A再次执行相同的范围查询,会发现新的用户记录“凭空出现”了,即发生了幻读

3、解决策略

幻读 的解决策略通常依赖于特定的数据库管理系统和隔离级别。在 串行化(Serializable) 隔离级别下,DBMS会 通过加锁等机制来防止其他事务的插入或删除操作,从而避免了幻读。此外,一些数据库管理系统还提供了特定的查询选项或语句来避免幻读。

如: 使用SELECT … FOR UPDATE语句来锁定查询结果集中的所有行。

四、总结

事务的并发执行是数据库管理系统提高性能的重要手段,但同时也带来了一系列并发问题。通过合理设置隔离级别和采用相应的解决策略,我们可以有效地避免脏读、不可重复读和幻读等并发问题,确保数据库的一致性和可靠性。

在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖

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

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

相关文章

Stable Diffusion——U-ViT用于扩散建模的 ViT 主干网

1.概述 扩散模型是最近出现的强大的深度生成模型,可用于生成高质量图像。扩散模型发展迅速,可应用于文本到图像生成、图像到图像生成、视频生成、语音合成和 3D 合成。 除了算法的改进,骨干网的改进在扩散建模中也发挥着重要作用。一个典型…

汽车R155法规中,汽车获取到的VTA证书,E后面的数字表示什么意思?

标签: 汽车R155法规中,汽车获取到的VTA证书,E后面的数字表示什么意思?; 汽车;VTA认证; 有些厂商汽车拿到的VTA证书上面写着E9, 有些厂商汽车拿到的VTA证书上面写着E5,E9与E5有什么差…

嵌入式之音频基础知识

声音特性 1、响度:人主观上感觉声音的大小(俗称音量),由“振幅”和人离声源的距离决定,振幅越大响度越大,人和声源的距离越小,响度越大; 2、音调:声音的高低&#xff0…

多商户消费券系统源码(ThinkPHP+FastAdmin+微信公众号)

打造智能促销新体验 一、引言:消费券系统的时代意义 在当今这个数字化高速发展的时代,电子商务和移动支付已经成为人们日常生活的重要组成部分。随着市场竞争的加剧,多商户消费券系统作为一种创新的促销手段,正逐渐受到商家和消…

从零训练yolov8

1.收集数据 2.数据标注 pip install labelimg3.划分数据集 0.2的验证机0.8的训练集 import os from shutil import copyfile from sys import exit import randomsource r"D:\Data\imgs\screenc" \\ target_train r"D:\Data\imgs\datasets\mydata\images\t…

aws msk加密方式和问控制连接方式

msk加密方式 msk提供了两种加密方式 静态加密传输中加密 创建集群时可以指定加密方式,参数如下 aws kafka create-cluster --cluster-name "ExampleClusterName" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file:/…

Android四大组件 Broadcast广播机制

一 概述 广播 (Broadcast) 机制用于进程或线程间通信,广播分为广播发送和广播接收两个过程,其中广播接收者 BroadcastReceiver 是 Android 四大组件之一。BroadcastReceiver 分为两类: 静态广播接收者:通过 AndroidManifest.xm…

flutter 实现旋转星球

先看效果 planet_widget.dart import dart:math; import package:flutter/material.dart; import package:vector_math/vector_math_64.dart show Vector3; import package:flutter/gestures.dart; import package:flutter/physics.dart;class PlanetWidget extends StatefulW…

echarts-树图、关系图、桑基图、日历图

树图 树图主要用来表达关系结构。 树图的端点也收symbol的调节 树图的特有属性: 树图的方向: layout、orient子节点收起展开:initialTreeDepth、expandAndCollapse叶子节点设置: leaves操作设置:roam线条&#xff1a…

2、xss-labs之level2

1、打开页面 2、传入xss代码 payload&#xff1a;<script>alert(xss)</script>&#xff0c;发现返回<script>alert(xss)</script> 3、分析原因 打开f12&#xff0c;没什么发现 看后端源码&#xff0c;在这form表单通过get获取keyword的值赋给$str&am…

【Vue】input框自动聚焦且输入验证码后跳至下一位

场景&#xff1a;PC端 样式&#xff1a; <div class"verification-code-input"><input v-model"code[index]" v-for"(_, index) in 5" :key"index" type"text" maxlength"1" input"handleInput(i…

渲染管线——应用阶段

知识必备——CPU和GPU 应用阶段都做了什么 应用阶段为渲染准备了什么 1.把不可见的数据剔除 2.准备好模型相关数据&#xff08;顶点、法线、切线、贴图、着色器等等&#xff09; 3.将数据加载到显存中 4.设置渲染状态&#xff08;设置网格需要使用哪个着色器、材质、光源属性等…

【机器学习】机器学习与大型预训练模型的前沿探索:跨模态理解与生成的新纪元

&#x1f512;文章目录&#xff1a; &#x1f4a5;1.引言 ☔2.跨模态理解与生成技术概述 &#x1f6b2;3.大型预训练模型在跨模态理解与生成中的应用 &#x1f6f4;4.前沿探索与挑战并存 &#x1f44a;5.未来趋势与展望 &#x1f4a5;1.引言 近年来&#xff0c;机器学习领…

著名书法家王杰宝做客央视频《笔墨写人生》艺坛人物经典访谈节目

印象网北京讯&#xff08;张春兄、冯爱云&#xff09;展示艺术风采&#xff0c;构建时代精神。5月25日&#xff0c;著名书法家、羲之文化传承人王杰宝&#xff0c;做客央视频《笔墨写人生》艺坛人物经典访谈节目&#xff0c;与中央电视台纪录频道主持人姚文倩一起&#xff0c;分…

SpringBoot 集成 ChatGPT(附实战源码)

建项目 项目结构 application.properties openai.chatgtp.modelgpt-3.5-turbo openai.chatgtp.api.keyREPLACE_WITH_YOUR_API_KEY openai.chatgtp.api.urlhttps://api.openai.com/v1/chat/completionsopenai.chatgtp.max-completions1 openai.chatgtp.temperature0 openai.cha…

全局平均池化笔记

全局平均池化&#xff08;Global Average Pooling, GAP&#xff09;是一种用于卷积神经网络&#xff08;CNN&#xff09;中的池化操作&#xff0c;其主要作用和优点包括&#xff1a; 减少参数数量&#xff1a;全局平均池化层将每个特征图通过取其所有元素的平均值&#xff0c;压…

ubuntu安装yum方法【最新可用】

一、安装命令 在根目录&#xff08;root&#xff09;下执行 sudo apt-get install build-essential sudo apt-get install yum二、出错处理 1、E: Package yum has no installation candidate 解决&#xff1a;更换镜像源&#xff0c;找到自己的系统版本用vim进行更换&#xff…

GmSSL3.X编译iOS和Android动态库

一、环境准备 我用的Mac电脑编译&#xff0c;Xcode版本15.2&#xff0c;安卓的NDK版本是android-ndk-r21e。 1.1、下载国密源码 下载最新的国密SDK源码到本地。 1.2、安装Xcode 前往Mac系统的AppStore下载安装最新Xcode。 1.3、安卓NDK下载 下载NDK到本地&#xff0c;选…

Protobuf - 语法、字段使用规则、注意事项

目录 前言 一、Protobuf 基本语法 1.1、Protoc 版本 1.2、文件格式配置 1.3、消息字段规则 1.3.1、字段数据类型 1.3.2、字段修饰规则 1.3.3、消息类型定义 1.3.4、enum 类型 1.3.5、Any 类型 1.3.6、oneof 类型 1.3.7、map 类型 1.3.8、默认值 1.3.9、更新消息…

css设置文字在固定宽度中等距分开(仅限于单行文本)

一、要实现的效果&#xff1a; 二、代码 要在CSS中设置文本在一个固定宽度的容器中等距分开&#xff0c; 可以使用text-align: justify;属性&#xff0c;它可以让文本两端对齐&#xff0c;看起来就像是等距分开的。 但是要注意&#xff0c;单独使用text-align:justify;只能对单…