mysql之隔离级别

MySQL事务隔离级别 本文主要探讨MySQL事务隔离级别的使用,具体什么场景使用啥,实战验证出现的并发事务问题 阅读详情

序言

    隔离级别是mysq数据库中的基础部分,明白了隔离级别有助于我们了解mysql并发以及锁机制,锁机制就是解决在隔离级别的基础上解决并发问题的补充手段。

什么是隔离级别?隔离级别有什么用?

   任何支持的数据库,都必须具备着四个特性,原子性、一致性、隔离性、持久性,这样才能够保证数据的正确性。

   事务的隔离性就是指,多个并发的事务同时访问一个数据库时一个事务不应该被另外一个事务所干扰,每个并发的事务间要相互隔离。

   其实脏读、不可重复读、幻读这些是在不存在隔离性的时候发生的。为了解决这些问题,就引入了隔离级别这一说。

简单说一下事务并发引起的问题:脏读、不可重复读、幻读

    脏读:

      事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据就是脏数据

   不可重复读:

     事务A多次读取同一数据,事务B在事务A读取的过程中,对数据做了更新的操作并提交,导致事务A多次读取同一数据时,结果不一致

   幻读:

    系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。

小节:

       不可重复读和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于增加和删除,解决不可重复读的问题只需要锁住满足条件的行,解决幻读就需要锁表。

 

隔离级别都有哪些?都解决了什么问题?

1、读未提交

    顾名思义,就是读取到未提交的内容。因此,在这种情况下,查询时不会加锁的,也就是因为查询不加锁,所以这种隔离级别的一致性是最差的,可能会产生脏读、不可重复读、幻读。

2、读已提交

   顾名思义,就是只能读到已经提交的内容。这是各个系统的中最常用的一种隔离级别,也是sqlserver和oracle的默认隔离级别,这种方式能够有效的避免脏读,这种方式是不会加锁的,但是在查询中有可能会显示的加锁,如:

  问题:普通的查询时不会加锁的,但是不加锁的话,又是怎么实现避免脏读的呢?

       这就要说,另一种机制“快照”,而这种既能够保证一致性又不加锁的读也被成为“快照读”,假设没有快照读,当一个事务更新的时候但是事务没有提交,另一个对更新的数据进行查询的时候就会因为无法查询而被阻塞,这种情况下, 并发能力就相当的差。

3、可重复读

     顾名思义,就是针对“不可重复读”这种情况而制定的隔离级别,自然,它可以有效的避免“不可重复读”,而它也是mysql默认的隔离级别。

     在这个级别下,普通的查询还是使用的“快照读”,但是和“读提交”不同的是,当事务启动之后,就不允许进行修改操作了,而“不可重复读”恰恰就是因为两次读取的数据之间进行了数据的更新,因此“重复读”能够有效的避免“不可重复读”,但是避免不了“幻读”,因为幻读是由于“插入和删除”而产生的。

4、串行化

    这是数据库最高的隔离级别,这种级别下,事务“串行化顺序执行”,也就是一个一个排队执行。这种级别下,“脏读”、“不可重复读”、“幻读”都可以被避免,但是执行效率奇差,性能开销也最大,所以基本没人会用。

 

 

 

总结

也正是有了隔离级别才能够保证并发的问题有所避免,其也是最为基础的知识。朋友们有什么感觉写的有什么的问题或者有什么不对的地方尽管提出来,及时进行回复和修改。

MySQL事务隔离级别详解 全局事务要求在其中的所有参与的事务要么都提交,要么都回滚,这对于事务原有的 ACID 要求又有了提高。解决幻读的方式有很多,但是它们的核心思想就是一个事务在操作某张表数据的时候,另外一个事务不允许新增或者删除这张表中的数据了。从上面对 SQL 标准定义了四个隔离级别的介绍可以看出,标准的 SQL 隔离级别定义里,REPEATABLE-READ(可重复读)是不可以防止幻读的。还是刚才上面的读已提交的图,虽然避免了读未提交,但是却出现了,一个事务还没有结束,就发生了 不可重复读问题。并不会有任何性能损失。 阅读详情

相关推荐

MySQL 默认的隔离级别解析

MySQL InnoDB默认采用REPEATABLE READ隔离级别,通过MVCC和间隙锁机制在保证数据一致性的同时提高并发性能。该级别避免了脏读和不可重复读,并能防止大部分幻读情况,与SQL标准定义略有不同。生产环境中可根据需求调整隔离级别,修改方式包括全局和会话级设置。不同MySQL版本保持该默认值,但云数据库可能有所调整。面试中常涉及MVCC实现原理、幻读解决方案等深度问题。

hixiaoyang的博客 1158

互联网项目中mysql应该选什么事务隔离级别

摘要企业千万家,靠谱没几家。 社招选错家,亲人两行泪。祝大家金三银四跳槽顺利!引言开始我们的内容,相信大家一定遇到过下面的一个面试场景面试官:“讲讲mysql有几个事...

孤独烟 2272

华为AC外置Portal认证方案配置步骤指南

华为AC外置Portal认证方案配置步骤指南

m0_46129105的博客 7693

mysql读事务的隔离级别

碰到的问题:做sns系统,对发布和评论的操作做异步处理,将发布和评论插入mysql后的id放入队列中,有一个常驻php进程负责从队列从队列中取得id做后续一些列的计数、通知等操作。正式环境上客户端浏览器发布和评论后,php脚本从数据库里读不到相应id对应的内容了,而测试环境却可以。 调试半天最后发现是mysql对tansaction_isolation(事务隔离级别)的配置不同。内网开发环境的隔

wzllai的专栏 8175

Pspice安装教程:Windows系统完整指南(含环境变量设置)

详细讲解在Windows系统中完成Pspice安装的全过程,涵盖安装步骤与关键的环境变量设置,帮助用户顺利运行仿真工具。适合初学者快速上手pspice安装教程中的核心环节。

weixin_42230607的博客 1181

瑞芯微RK3588平台YOLOv8Pose模型RKNN部署与C++优化实战:从模型转换到高效推理的全流程指南-附源码

错误码 | 原因 | 解决方案 || -1001 | ONNX算子不支持 | 升级RKNN SDK至最新版 || -2003 | 量化校准数据不足 | 增加校准图片至500张 || -3005 | 输入尺寸不匹配 | 固定模型输入尺寸为640x640 || 资源消耗 | CPU 35% | NPU 90% |

m0_64661770的博客 991

真正理解Mysql的四种隔离级别

事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。 事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消撤消之前到事务开始时的所以操作。

Ariescat Blog 1304

本地部署大模型:dgx-spark-ai项目硬件选型、部署与私有化AI构建指南

大语言模型(LLM)的本地部署是当前AI工程实践中的重要方向,其核心原理在于将模型权重与计算过程完全置于用户可控的硬件环境中。这项技术的核心价值在于实现了数据主权与隐私安全,避免了云端服务的延迟、持续订阅成本及数据外泄风险。从技术实现看,本地部署的关键在于硬件选型与软件环境适配,尤其是NVIDIA GPU的CUDA生态、显存容量与内存带宽的匹配。在应用场景上,本地化部署特别适合对数据敏感性要求高的领域,如企业内部代码助手、金融分析或医疗研究,能够支持私有化模型微调与定制化工作流构建。本文以dgx-spark

weixin_42531579的博客 506

COMSOL 热应力仿真 3 种边界条件设置对比:固定、对称与弹性支撑

本文深入探讨了COMSOL热应力仿真中固定、对称与弹性支撑三种边界条件的设置差异及其对仿真结果的影响。通过2mm正方形模型的对比分析,揭示了不同边界条件在应力分布和变形模式上的实质性差异,为工程设计与分析提供了实用的选型建议和优化方向。

weixin_30412167的博客 771

Transformer实战(38)——视觉Transformer (Vision Transformer, ViT)

Transformer 在自然语言处理 (NLP) 领域取得了显著成就,在许多不同的任务中都表现出色。在本节中,我们将探索视觉 Transformer (Vision Transformer, ViT) 模型。正如 NLP 领域创建了多种模型一样,视觉领域也开发了多种模型,每种模型都为计算机视觉提供了新的视角。通过本节,将学习如何使用 ViT 等模型进行计算机视觉任务,了解基于 Transformer 的预训练计算机视觉模型的工作原理,以及如何针对特定任务进行微调。

盼小辉丶的博客 2935

基于 Simulink 的飞轮储能系统(Flywheel Energy Storage System, FESS)充放电协调控制实战教程

本教程详细介绍了基于Simulink的飞轮储能系统(FESS)建模与控制方法。系统采用永磁同步电机(PMSM)和背靠背变流器架构,包含机侧全速域矢量控制和网侧直流稳压控制。重点讲解了机电耦合建模、FOC控制算法实现、基于电压下垂的协调控制策略,以及混合储能系统设计思路。教程提供了MATLAB函数代码示例,并给出典型工况下的仿真波形分析指南,同时指出了常见问题解决方案。该模型可用于研究飞轮储能在调频、能量回收等场景的应用,为新能源消纳和微网稳定提供仿真工具。

MHD0815的博客 168

mysql隔离级别

隔离级别,幻读

songtaiwu的博客 9165

《YOLOv8:从入门到实战》专栏介绍 & 专栏目录

本专栏涵盖了丰富的YOLOv8算法从入门到实战系列教程,专为学习YOLOv8的同学而设计,堪称全网最详细的教程!🌈🌈🌈

小哥谈 6491

【MySql】MySql事务及隔离级别

MySql事务隔离级别

酷酷的馫博客 1万+

TIA protal与SCL从入门到精通(4)——软件单元使用

平台: TIA portal 15.1 1.添加软件单元 添加软件单元如下图: 关于软件单元使用基本限制,看如下文章即可 TIA protal与SCL从入门到精通(3)——软件单元基本介绍 每个软件单元是一个独立结构,所以每个软件单元的运行方式与实际PLC类似,所以首先添加主函数块: 注意:无论系统是否是具有并发性(这里不要混淆并行与并发的概念),在PLC所有主函数执行总是按主函数依次完成...

苦走一口田 7380

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

mysql 的默认隔离级别,其他隔离级别

事务隔离级别定义了一个事务与其他事务之间的隔离程度。更高的隔离级别通常意味着更强的数据一致性保障,但可能会带来更大的性能开销。读未提交(Read Uncommitted)读已提交(Read Committed)可重复读(Repeatable Read)串行化(Serializable)MySQL 的 InnoDB 存储引擎默认使用的事务隔离级别是可重复读(Repeatable Read)。

Flying_Fish_roe的博客 1869

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

MySQL4种隔离级别

在此隔离级别下,事务可以读取其他事务尚未提交的修改(脏读)。这意味着一个事务可以看到另一个事务尚未提交的中间状态数据。在此隔离级别下,事务只能读取已经提交的其他事务所做的修改。每个查询只会看到在该查询开始之前已经提交的数据。在此隔离级别下,事务在执行期间多次读取同一数据时,会看到一致的结果,即使其他事务已经修改了这些数据。MySQL 的 InnoDB 存储引擎通过多版本并发控制(MVCC)实现这一点。这是最高的隔离级别,要求事务必须顺序执行,以避免并发问题。

ruan114514的博客 1569

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

mysql设置数据库隔离级别及各个隔离级别的作用

通过配置数据库隔离级别,从而提升系统整体性能。

码界云仓 1927

MySQL中的事务隔离级别有哪些

可能发生脏读、不可重复读、幻读,性能最高但安全性最低。:防止脏读,但可能发生不可重复读和幻读。REPEATABLE READ(MySQL 默认):防止脏读和不可重复读,MySQL 还能避免幻读,适用于大多数高并发业务。:所有并发问题都能避免,但性能最差。MySQL 默认采用,主要是因为 MySQL 通过MVCC解决了大部分的并发问题,既能保持较高的事务隔离级别,又不会影响太多的性能。读未提交(Read Uncommitted)该级别允许事务读取其他事务尚未提交的数据(脏读)。

Weiki的博客 5119

mysql的默认隔离级别

mysql的默认隔离级别 原文:https://www.cnblogs.com/rjzheng/p/10510174.html 知识点总结 ----------------------------------------------------------...

5903

mysql事务隔离级别

隔离级别 MySQL是一个服务器/客户端架构的软件,对于同一个服务器来说,可以有若干个客户端与之连接,每个客户端与服务器连接上之后,就可以称之为一个会话(Session)。我们可以同时在不同的会话里输入各种语句,这些语句可以作为事务的一部分进行处理。不同的会话可以同时发送请求,也就是说服务器可能同时在处理多个事务,这样子就会导致不同的事务可能同时访问到相同的记录。我们前边说过事务有一个特性称之为...

laozhang0910的博客 8296

【MySQL】MySql中的四种隔离级别

MySQL事务隔离级别详解:MySQL提供了四种事务隔离级别,分别是读未提交(Read Uncommitted)、读提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。其中读未提交级别最低,允许脏读;读提交可防止脏读但可能出现不可重复读;可重复读是MySQL默认级别,保证同一事务多次读取结果一致;串行化级别最高,通过强制事务排序解决幻读问题。每种隔离级别通过不同锁机制实现,开发者可根据业务需求选择合适的隔离级别。文章还演示了如何查看和设置隔离

大白的编程日记. 1109

Mysql事务隔离级别

本篇文章介绍Mysql中的事务隔离级别,简单易懂,适合刚刚学习Mysql的萌新。

m0_62946761的博客 8998

mysql默认隔离级别_MySQL的四种事务隔离级别

一、事务的基本要素(ACID)1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A...

weixin_32578799的博客 1694

MySQL 事务隔离级别_mysql事务隔离级别最高

❝如果隔离级别为序列化,则用户之间通过一个接一个顺序地执行当前的事务,这种隔离级别提供了事务之间最大限度的隔离。❝在可重复读在这一隔离级别上,事务不会被看成是一个序列。不过,当前正在执行事务的变化仍然不能被外部看到,也就是说,如果用户在另外一个事务中执行同条 SELECT 语句数次,结果总是相同的。(因为正在执行的事务所产生的数据变化不能被外部看到)。❝READ COMMITTED 隔离级别的安全性比 REPEATABLE READ 隔离级别的安全性要差。

2501_90392009的博客 1669
上一篇: mysql索引以及算法数据结构
下一篇: Centos7下Docker安装
JavaWeb_Hao
博客等级 码龄9年 21粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值