当前位置: 首页 > article >正文

并发测试是如何产生锁、脏数据的

结合数据库底层、事务隔离级别、并发场景用最直白好懂的逻辑一次性讲清并发测试为什么会造出锁、脏读、不可重复读、幻读、脏数据附带真实业务场景、SQL 过程、锁升级全过程。一、先搞懂前提并发是什么并发测试 多个线程 / 用户同时操作同一张表、同一行数据数据库默认事务 ACID为了保证数据不乱就必须加锁锁控制不好、隔离级别太低就直接出脏数据。简单因果链多线程同时改数据 → 数据库必须上锁防冲突 → 锁粒度 / 隔离级别不合适 → 脏读、不可重复读、幻读、数据覆盖错乱 → 脏数据二、并发为什么会产生【锁】1. 不加锁会发生什么假设两个事务同时修改同一行余额A余额 100要减 50B余额 100要减 50不加锁并行执行A 读取余额100B 同时读取余额100A 计算100-5050准备写回B 计算100-5050准备写回最后数据库余额变成50实际应该扣两次0这就是丢失更新属于最典型脏数据。2. 数据库为了解决上面问题自动加锁数据库规则同一行数据写操作必须排他只要有事务在修改、插入、删除数据库就自动上锁禁止其他事务同时修改。锁本质就是资源独占标记。常见锁分类并发测试必遇行锁InnoDB 默认只锁被修改的那一行并发好、阻塞少。表锁直接锁整张表其他所有读写都阻塞并发差。意向锁、共享锁 (S)、排他锁 (X)共享锁读加锁允许多个读禁止写排他锁写加锁禁止读、禁止其他写3. 并发压测时锁会越来越严重锁升级高并发下会出现大量单行行锁 → 数据库认为行锁太多开销大 →自动升级为表锁结果整个表被锁死所有接口超时、TPS 暴跌、服务雪崩。这就是并发压测经常测出来的锁等待、锁超时、数据库卡顿。三、并发如何产生【脏数据】三大经典问题 业务脏数据数据库标准三大并发问题全部由隔离级别太低 事务未提交导致。MySQL 默认隔离级别可重复读 RR仍挡不住幻读最低隔离级别读未提交 Read Uncommitted全问题暴露。1. 脏读Dirty Read—— 最典型脏数据过程事务 A 修改数据但还没提交事务 B 直接读到了 A 未提交的数据之后事务 A回滚修改作废事务 B 读到的数据就是无效、虚假脏数据例子转账A 给 B 转 100事务内更新余额未提交B 查询余额看到多了 100A 事务报错回滚余额恢复原样B 之前查到的数据就是脏数据2. 不可重复读Non-repeatable Read同一个事务内多次查询同一行结果不一样原因其他事务中途提交了更新、修改。侧重同一行数据被修改场景事务 B 第一次查余额100事务 A 修改余额为 200 并提交事务 B同个事务内再次查询变成 200两次结果不一致。3. 幻读Phantom Read同一个事务内前后查询记录条数不一样原因其他事务中途插入、删除数据。侧重记录行数增减场景事务 B 查询用户总数10 人事务 A 新增一个用户并提交事务 B 再次查询11 人像凭空多出来数据像幻觉一样。4. 业务真实脏数据开发最常踩坑压测必现不止数据库标准问题业务层面脏数据丢失更新前面余额例子多线程覆盖更新后执行的把先执行的结果冲掉。重复扣款、重复下单并发请求重复提交同一订单创建多条、余额重复扣减。库存超卖高并发减库存行锁没控制好库存减成负数。事务长 并发高 → 死锁A 锁 B 资源B 锁 A 资源互相等待数据库死锁接口永久阻塞。四、完整串起来并发测试全过程你做并发压测时整个链路是这样发生的JMeter/LoadRunner 起大量线程同时请求接口接口同时开启数据库事务执行 update/insertInnoDB 为防止数据错乱自动加行排他锁并发量越大并行事务越多锁竞争越激烈部分事务读取其他未提交事务的数据→脏读多个事务同时更新同一行 →丢失更新行锁数量过多 →锁升级为表锁数据库阻塞事务互相等待资源 →死锁超时回滚异常、数据错乱、余额不对、库存超卖 →最终脏数据五、一句话总结并发产生锁的原因多线程同时修改数据数据库为防止数据错乱强制加锁独占资源并发越高锁竞争越严重甚至锁升级、死锁。并发产生脏数据的原因隔离级别低读到未提交回滚的数据脏读事务交叉修改覆盖更新、丢失更新插入删除导致前后查询不一致幻读长事务 锁竞争导致异常回滚、数据错乱、业务超卖重复操作六、附带解决方案面试必背提高数据库隔离级别RR → Serializable加悲观锁select ... for update乐观锁版本号 version 控制更新业务加分布式锁Redis 锁防止重复请求缩短事务时长避免长事务锁占用索引优化避免无索引导致行锁升级表锁接口幂等设计防重复下单扣款

相关文章:

并发测试是如何产生锁、脏数据的

结合数据库底层、事务隔离级别、并发场景,用最直白好懂的逻辑,一次性讲清:并发测试为什么会造出锁、脏读、不可重复读、幻读、脏数据,附带真实业务场景、SQL 过程、锁升级全过程。一、先搞懂前提:并发是什么并发测试 …...

宁德时代6分钟超充发布-动力电池进入秒充时代

宁德时代6分钟超充发布:动力电池进入"秒充时代" 一、技术突破:从"里程焦虑"到"补能自由" 2026年4月21日,宁德时代在北京举办2026"极域之约"超级科技日新品发布会,震撼推出多款新型电池产…...

JimuReport:企业级开源报表工具的技术架构与实施路径分析

JimuReport:企业级开源报表工具的技术架构与实施路径分析 【免费下载链接】JimuReport 开源的报表工具与BI大屏,完美替代帆软和Tableau,提供强大的报表能力。一款类似Excel的报表设计器和大屏设计!完全在线傻瓜式拖拽设计&#xf…...

Flux2-Klein-9B-True-V2图生图教程:手绘草图→线稿强化→上色风格化三阶段

Flux2-Klein-9B-True-V2图生图教程:手绘草图→线稿强化→上色风格化三阶段 1. 模型介绍 Flux2-Klein-9B-True-V2是基于官方FLUX.2 [klein] 9B改进的文生图/图生图模型,特别适合创意工作者将草图转化为专业作品。这个模型不仅能理解文字描述&#xff0c…...

别瞎忙活了!你的论文“地基”,百考通AI 已经按“期刊图纸”给你建好了

你是否经历过这样的循环:对着心仪期刊的“投稿须知”逐字研读,然后打开文档,试图模仿几篇范文搭建自己的论文框架。一番折腾后,满怀信心地投稿,却等来一封冰冷的退稿信,理由往往是“格式不符”、“结构不规…...

告别论文焦虑:百考通AI,从“开题”到“投稿”的智能学术伙伴

你是否曾在深夜面对空白文档,为论文框架绞尽脑汁?是否对照着“范文”苦苦模仿,却仍因格式、逻辑不符期刊“隐形规则”而被初审退回?从课程作业、毕业论文到挑战核心期刊乃至SCI,每一关都充满独特的“规范”陷阱——普刊…...

Docker镜像安全配置实战手册(CVE漏洞零容忍配置清单)

第一章:Docker镜像安全配置的底层逻辑与风险全景Docker镜像并非孤立的静态文件,而是由多层只读文件系统(Layer)叠加构成的可执行单元,其安全性根植于构建时的上下文、基础镜像来源、依赖注入方式以及元数据完整性。每一…...

游戏开发资源素材管理与版本控制

游戏开发资源素材管理与版本控制 在游戏开发过程中,资源素材管理和版本控制是确保项目高效推进的关键环节。无论是美术资源、音频文件还是代码脚本,如何有效管理这些素材并避免版本混乱,直接影响开发效率和团队协作。本文将围绕游戏开发中的…...

LiquidAI LFM2-2.6B-GGUF部署指南:4GB内存MacBook/NUC设备实测成功

LiquidAI LFM2-2.6B-GGUF部署指南:4GB内存MacBook/NUC设备实测成功 1. 项目介绍 LFM2-2.6B-GGUF是由Liquid AI公司开发的大语言模型,经过GGUF量化处理后特别适合资源有限的设备运行。这个模型最吸引人的特点是它能在4GB内存的设备上流畅运行&#xff0…...

Linux bridge 在终端路由器中的实际应用——路由模式、桥接模式与 VLAN 桥接

Linux bridge 是终端路由器中最基础的网络组件之一——所有 LAN 口和 WiFi 接口能互通,就是因为它们都加在同一个 bridge 里。本文讲清 bridge 在路由模式、桥接模式、VLAN 桥接中的不同用法,以及实际开发中的注意事项。 1. Bridge 是什么 简单说&#…...

nli-MiniLM2-L6-H768开源大模型:适配Intel Gaudi2芯片的Habana SynapseAI部署指南

nli-MiniLM2-L6-H768开源大模型:适配Intel Gaudi2芯片的Habana SynapseAI部署指南 1. 模型概述 nli-MiniLM2-L6-H768是一个专为自然语言推理(NLI)与零样本分类设计的轻量级交叉编码器(Cross-Encoder)模型。该模型在保持接近BERT-base精度的同时,通过6层…...

AI-Shoujo HF Patch终极指南:3步快速解锁完整游戏体验与70+模组整合

AI-Shoujo HF Patch终极指南:3步快速解锁完整游戏体验与70模组整合 【免费下载链接】AI-HF_Patch Automatically translate, uncensor and update AI-Shoujo! 项目地址: https://gitcode.com/gh_mirrors/ai/AI-HF_Patch 你是否对AI-Shoujo原版游戏的功能限制…...

脉冲神经网络开发指南:从原理到医疗影像实战

1. 脑启发式AI开发指南作为一名在机器学习领域工作多年的开发者,我见证了传统神经网络与脑科学融合带来的范式转变。去年参与医疗影像分析项目时,采用脉冲神经网络(SNN)将CT扫描识别准确率提升了12%,这让我意识到生物神…...

如何不依赖AI检测工具,自己识别AI生成内容

AI检测工具其实并不靠谱:教你自己辨别机器人写的文章无论你愿不愿意,网络上的"垃圾内容"已经无处不在。AI生成的内容几乎已经全面占领互联网,其中大量内容语义不通、毫无价值。但对于不知道如何辨别的人来说,这些内容依…...

保姆级教程:用 MAT 分析 Java 内存泄漏前,你的 Mac 环境真的配好了吗?

保姆级教程:用 MAT 分析 Java 内存泄漏前,你的 Mac 环境真的配好了吗? 当 Java 应用出现内存泄漏时,Eclipse Memory Analyzer Tool (MAT) 就像外科医生的手术刀——但若刀本身生锈,再精湛的技术也难施展。许多开发者急…...

SAP Webservice发布后,用SoapUI和Postman做接口测试的完整流程与参数调试技巧

SAP Webservice接口测试全攻略:SoapUI与Postman实战指南 当你在SAP系统中成功发布了Webservice或RESTful服务后,真正的挑战才刚刚开始。如何确保这些接口能够稳定、高效地与外部系统对接?本文将带你深入SoapUI和Postman这两款业界主流测试工具…...

从Halcon仿射变换到机械手抓取:手把手教你用vector_to_hom_mat2d完成九点标定与坐标映射(附完整HDevelop代码)

工业视觉九点标定实战:Halcon仿射变换在机械手抓取中的精准坐标映射 当机械臂需要准确抓取传送带上的零件时,视觉系统与机械手的坐标对齐成为关键。想象一下:相机识别到的螺丝孔像素坐标是(1024,768),但机械手的世界坐标系中这个…...

用Python实现一个简单的区块链概念

区块链技术近年来备受关注,它以其去中心化、不可篡改等特性在金融、物联网等领域大放异彩。虽然区块链听起来高深莫测,但用Python实现一个简单的区块链概念并不复杂。本文将带你用Python从零开始构建一个迷你区块链,揭开这项技术的神秘面纱。…...

量子优化算法在JIT-JSSP调度问题中的应用与实践

1. 量子优化算法与JIT-JSSP问题概述 量子优化算法近年来在组合优化领域展现出独特优势,其中量子近似优化算法(QAOA)通过将经典优化问题映射到量子系统哈密顿量,利用量子叠加和纠缠特性探索解空间。这种方法的典型应用场景是NP难问…...

FLUX.1-Krea-Extracted-LoRA部署教程:CUDA 12.4与PyTorch 2.5.0兼容验证

FLUX.1-Krea-Extracted-LoRA部署教程:CUDA 12.4与PyTorch 2.5.0兼容验证 1. 模型概述 FLUX.1-Krea-Extracted-LoRA是一款专为真实感图像生成设计的风格权重模型,基于FLUX.1-dev基础模型开发。该模型通过LoRA(Low-Rank Adaptation&#xff0…...

PHP代码审计实战:从一道BugKu题看MD5比较漏洞的两种经典绕过姿势

PHP代码审计实战:MD5比较漏洞的两种经典绕过姿势深度解析 在网络安全领域,PHP代码审计一直是发现Web应用漏洞的重要手段。今天我们将通过一道经典的BugKu题目,深入剖析PHP中MD5比较漏洞的两种典型绕过方式。这不仅是一次解题技巧的分享&#…...

从零到一:在Ubuntu上为树莓派搭建交叉编译环境与wiringPi实战

1. 为什么需要交叉编译环境 第一次接触树莓派开发的朋友可能会疑惑:为什么不能直接在树莓派上写代码编译呢?我刚开始也有同样的疑问,直到实际开发时才发现问题。树莓派的ARM处理器性能有限,编译一个稍复杂的程序可能要等好几分钟。…...

Qianfan-OCR部署教程:模型路径/root/ai-models/baidu-qianfan/Qianfan-OCR配置规范

Qianfan-OCR部署教程:模型路径/root/ai-models/baidu-qianfan/Qianfan-OCR配置规范 1. 项目概述 百度千帆推出的Qianfan-OCR是一款开源的4B参数端到端文档智能多模态模型,基于Qwen3-4B语言模型构建。这个多模态视觉语言模型(VLM)采用Apache 2.0协议&am…...

如何在可视化界面调整列的顺序_Move Column移动字段到指定位置操作

列顺序必须从SQL查询或数据建模层控制,界面拖拽仅影响临时视图显示。Tableau、Power BI、Superset的拖拽操作不改变底层字段顺序,导出或刷新后复位;ORDER BY只影响行序,与列序无关。拖拽列顺序在主流 BI 工具里根本不可靠多数可视…...

Maxtang SXC-ALN30无风扇迷你主机工业应用解析

1. Maxtang SXC-ALN30无风扇迷你主机深度解析在工业自动化和嵌入式应用领域,一台兼具高性能与丰富接口的无风扇迷你主机往往能成为项目成功的关键。Maxtang SXC-ALN30就是这样一款专为严苛环境设计的设备,它搭载了Intel Alder Lake-N系列处理器&#xff…...

SVG核心属性解析与动态交互实现

1. SVG核心属性深度解析 SVG作为矢量图形的标准格式,其强大之处在于丰富的属性系统。这些属性不仅能定义图形外观,更能通过动态修改实现复杂的交互效果。我们先从几个关键属性入手,看看它们如何成为动态交互的基石。 viewBox属性堪称SVG的&qu…...

从吉尔伯特单元到混频器:一个CMOS差动放大器的‘跨界’实战应用解析

从吉尔伯特单元到混频器:一个CMOS差动放大器的‘跨界’实战应用解析 在模拟集成电路设计的浩瀚海洋中,差动放大器犹如一艘稳健的航船,承载着信号处理的基础重任。而当这艘航船驶入射频通信的湍流海域时,它的形态开始发生奇妙的变化…...

系统容灾方案

系统容灾方案:保障业务连续性的关键 在数字化时代,企业的核心业务系统一旦发生故障,可能导致巨大的经济损失和声誉风险。系统容灾方案正是为了解决这一问题而生,它通过技术手段确保业务在灾难发生时仍能持续运行。无论是自然灾害…...

Janus-Pro模型注意力机制与SSD缓存优化解析

1. Janus-Pro模型中的注意力机制解析注意力机制作为现代深度学习架构的核心组件,其本质是一种动态权重分配系统。在Janus-Pro模型中,这一机制被专门优化用于处理图像生成任务中的长序列数据。理解其工作原理需要从三个层面切入:1.1 基础注意力…...

nli-MiniLM2-L6-H768案例展示:英文新闻事件因果链自动构建过程

nli-MiniLM2-L6-H768案例展示:英文新闻事件因果链自动构建过程 1. 模型简介 nli-MiniLM2-L6-H768是一个专为自然语言推理(NLI)与零样本分类设计的轻量级交叉编码器(Cross-Encoder)模型。它在保持接近BERT-base精度的同时,通过6层768维的结构设计实现了…...