MySQL事务隔离

什么是事务隔离?

为了确保在并发事务执行时,各个事务之间能够相互独立、互不干扰地运行,从而保证数据的一致性。

事务的隔离级别

MySQL事务隔离为了满足不同场景,提供了4个事务隔离级别(严格来讲是InnoDB存储引擎支持的),分别是:

  • 读未提交(Read Uncommitted)

  • 读已提交(Read Committed)

  • 可重复读(Repeatable Read)

  • 串行化(Serializable)

读未提交

事务在各自的周期内,可以读取到其他事务未提交的数据。

以下图为例,事务2的两次查询结果分别为18和19,即便事务1没有提交。

这种现象被称为“脏读”。 

读已提交

事务在各自的周期内,每次对同一个sql进行查询都是已经提交的数据。

以下图为例,事务2的两次查询结果分别为18和19,因为在此期间事务1对数据进行了更改。

 但是,这种现象被称为“不可重复读”,因为违反了事务的隔离性原则(在一个事务内,数据应该是一致的)

可重复读

每个事务在自己的事务周期内,多次对同一个sql进行查询都是相同的数据。

 以下图为例,事务2的两次查询结果都一样,即便在此期间事务1对数据进行了更改。

 但是,如果在“可重复读”级别下进行了当前读,那么还是会出现像”读已提交“中出现的“不可重复读”的现象,不过这里称之为”幻读“。

当前读就是读取行数据当前最新的状态,这个过程中会对所有读、写的数据加上相应的读锁、写锁、范围锁,目的是避免并发冲突。

串行化

可串行化,很好理解:并发事务的执行完全是串行,依次执行,不存在冲突导致的一致性问题。但是可想而知,这种隔离级别的并发效率肯定极为低下。

总结

MySQL提供了多种事务隔离级别,包括读未提交、读已提交、可重复读和串行化等。这些隔离级别在并发性能和数据一致性之间提供了不同的权衡,可以根据具体的应用场景和需求来选择适合的隔离级别。

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

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

相关文章

面试经验分享 | 某康安全开发工程师

一、反射型XSS跟DOM型XSS的最大区别 DOM型xss和别的xss最大的区别就是它不经过服务器,仅仅是通过网页本身的JavaScript进行渲染触发的。 二、Oracle数据库了解多吗 平常用的多的是MySQL数据库,像Oracle数据库也有了解,但是用的不多。 三、…

亚马逊、速卖通卖家如何做好测评让店铺销量稳定增长?

近期有刚入驻跨境电商的新买家咨询珑哥,店铺上的产品有人浏览,就是没有人下单,新店铺很正常因为很多人去购买东西,首先看的是评价,没有评价一般人不敢直接去下单。就像我们去淘宝买东西,都要看下评价&#…

如何让ChatGPT更懂你?试试Custom Instructions与Memory机制

目标 用简单提示词(prompt)完成复杂操作逻辑,提升 ChatGPT 对话体验。 现状 如果让 ChatGPT 执行一个很简单的任务,比如:介绍一下 AI 生成内容,我们会发现在默认配置情况下,如果提示词没有描述…

论文阅读——ViTAE

ViTAE: Vision Transformer Advanced by Exploring Intrinsic Inductive Bias ViTAE旨在将细胞神经网络中固有的IB引入视觉转换器。如图2所示,ViTAE由两种类型的细胞组成,即RC和NC。RC负责将多尺度上下文和局部信息嵌入到令牌中,NC用于进一步…

5.x 版本 CallKit SDK 无法弹起通话界面

5.x 版本 CallKit SDK 作为接听方在前台的情况下无法弹起通话界面,作为拨打方能正常弹起通话界面 分析(根因分析、需求分析) CallKit SDK 初始化依赖于 IMKit SDK 初始化,如果您使用 IMLib SDK 的方法初始化的话,会导…

邮件推送服务的要素?邮件推送服务的优势?

邮件推送服务怎么配置?如何使用邮件推送服务发信? 通过精心策划和实施的邮件推送服务,企业不仅能够及时传递信息,还能有效增强客户黏性,促进业务增长。那么,邮件推送服务的要素究竟有哪些呢?接…

通过一篇文章让你了解什么是函数栈帧

函数栈帧的创建和销毁 前言一、什么是函数栈帧二、 理解函数栈帧能解决什么问题三、 函数栈帧的创建和销毁解析3.1 什么是栈3.2 认识相关寄存器和汇编指令相关寄存器eaxebxebpespeip 相关汇编命令 3.3 解析函数栈帧的创建和销毁3.3.1 预备知识3.3.2 函数的调用堆栈3.3.4 准备环…

爆款游戏如何借助 RocketMQ Serverless,打造流畅体验并节省 98% 成本?

作者:鼎岳、稚柳、勇猛、家泽 一款游戏作品之所以能在市场上引爆热潮,铸就爆款传奇,除了独树一帜的创新设计理念、引人入胜的故事情节和丰富多样的玩法机制之外,最核心的要素就是为玩家提供极致流畅且无与伦比的游戏体验。这种体…

揭秘FastStone Capture:一款强大且高效的截图工具

目录 【引子】【FastStone Capture概述】【安装步骤】【使用攻略】【核心功能解析】【总结】 【引子】 在数字化信息时代,无论是工作汇报、在线教学,还是日常交流中,屏幕截图已经成为我们必不可少的辅助工具。今天,我要为大家详细…

面试官:如何判断一个元素是否在可视区域中?

一、用途 可视区域即我们浏览网页的设备肉眼可见的区域,如下图 在日常开发中,我们经常需要判断目标元素是否在视窗之内或者和视窗的距离小于一个值(例如 100 px),从而实现一些常用的功能,例如:…

【Linux】Centos7上安装MySQL5.7

目录 1.下载安装包2. 上传安装包3.将 mysql 解压到/usr/local/4.重命名5.创建mysql用户及用户组6. 进入 mysql 目录修改权限7. 安装依赖库8. 执行安装脚本9. 复制启动脚本到资源目录10. 拷贝 my.cnf,并赋予权限11. 配置环境变量12. 启动 mysqld13. 登录 MySQL&#…

Extropic.AI:终结GPU/TPU的热力学未来Chip?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…