数据库的事务隔离级别有哪些?

并行事务会引发什么问题?
同时处理多个事务的时候,就可能出现脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read)的问题。
脏读:
如果一个事务「读到」了另一个「未提交事务修改过的数据」,就意味着发生了「脏读」现象。

  • 例子:事务A开始并读取某账户余额为1000元。此时,事务B开始,将该账户余额改为1500元但尚未提交。如果事务A再次读取该账户余额,它可能会看到1500元,这是事务B未提交的数据。如果事务B最终回滚,事务A读取的数据就是脏数据。

不可重复读:

在一个事务内多次读取同一个数据,如果出现前后两次读到的数据不一样的情况,就意味着发生了「不可重复读」现象

  • 例子:事务A读取了一个商品的库存数量为100。此时,事务B开始,购买了10个商品,减少了库存数量但尚未提交。如果事务A再次查询该商品的库存数量,它会发现数量变为90,与之前的读取结果不同。

幻读:

在一个事务内多次查询某个符合查询条件的「记录数量」,如果出现前后两次查询到的记录数量不一样的情况,就意味着发生了「幻读」现象。

  • 例子:事务A执行了一个查询,统计某个商品类别下的总商品数,假设得到结果为10。此时,事务B开始,向该类别添加了多个新商品,但尚未提交。如果事务A再次执行相同的查询,它可能会得到一个不同的结果,比如15,即使它没有读取到B事务添加的具体商品记录,但总数已经改变。

事务的隔离级别有哪些?

隔离级别定义了事务之间如何相互隔离,以避免并发事务带来的数据不一致问题,如脏读、不可重复读和幻读

SQL 标准提出了四种隔离级别来规避这些现象,隔离级别越高,性能效率就越低,这四个隔离级别如下:

  • 读未提交(read uncommitted,指一个事务还没提交时,它做的变更就能被其他事务看到;
  • 读提交(read committed,指一个事务提交之后,它做的变更才能被其他事务看到;
  • 可重复读(repeatable read,指一个事务执行过程中看到的数据,一直跟这个事务启动时看到的数据是一致的,MySQL InnoDB 引擎的默认隔离级别
  • 串行化(serializable );会对记录加上读写锁,在多个事务对这条记录进行读写操作时,如果发生了读写冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行;

MySQL InnoDB 引擎的默认隔离级别虽然是「可重复读」,但是它很大程度上避免幻读现象

参考:小林coding 

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

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

相关文章

NSSCTF-2021年SWPU联合新生赛

[SWPUCTF 2021 新生赛]finalrce 这道题目考察tee命令和转义符\ 这题主要是,遇到一种新的符号,"\"—转义符。我理解的作用就是在一些控制字符被过滤的时候,可以用转义符,让控制符失去原本的含义,变为字面量…

react中配置路径别名@

1.说明 在react项目中想要使用代替“src/”需要在项目根目录下配置两个文件,craco.config.js和sconfig.json; craco.config.js配置文件是用于项目解读为“src/” jsconfig.json配置文件是用于vsCode在编辑过程是输入后可以将src下的文件目录进行自动联…

k8s中部署Jenkins、SonarQube、StorageClass部署流程

部署Jenkins 系统环境: • kubernetes 版本:1.23.3 • jenkins 版本:2.172 • jenkins 部署示例文件 Github 地址:https://github.com/my-dlq/blog-example/tree/master/jenkins-deploy 一、设置存储目录 在 Kubenetes 环境下…

[DVWA靶场实战]-SQL注入攻击(命令注入+SQL回显注入+sqlmap工具实现自动化注入)详细教程

原理与内容 1.命令注入原理 以Windows系统的DOS命令为例,DOS命令可以查看本地网络、系统用户、当前目录、字符串查找,也可以复合命令。命令注入就是利用复合命令的特点,通过Web程序,在服务器上,拼接系统命令&#xf…

elk日志索引被锁blocks,日志无法写入

现象: kafka积压,logstash无法将日志写入到es logstash报错: [logstash.outputs.elasticsearch][main][] Retrying failed action {:status>403 :error>{“type”>“cluster_block_exception”, “reason”>“index [] blocked …

昇思MindSpore 应用学习-CycleGAN图像风格迁移互换

日期 心得 昇思MindSpore 应用学习-CycleGAN图像风格迁移互换(AI代码学习) CycleGAN图像风格迁移互换 模型介绍 模型简介 CycleGAN(Cycle Generative Adversarial Network) 即循环对抗生成网络,来自论文 Unpaired Image-to-Image Trans…

Rust代码答疑报错|Python一对一辅导答疑

Question 你好,我是悦创。 学员答疑: https://code.bornforthis.cn/?id4e72084d-1eaf-44ed-8067-744671491574https://code.bornforthis.cn/?id664ff169-41d6-409f-a05b-02ed42279759 问题代码: // You can bring module paths into sc…

使用python连接neo4j时报错:IndexError: pop from an empty deque的解决办法

遇见这个错,首先可能是python现在的py2neo的版本不对,把2021.1.0版本卸载,下载 py2neo4.2.0版本。我不是,一阵搜,发现需要改配置文件 首先找到你的neo4j的安装路径 在网上看的是,先找到data/dbms/auth文件…

Ins云手机在运营Instagram账号的优势

在数字时代,Instagram成为全球数亿用户的重要社交平台,其超过10亿的用户数量,为企业提供了广阔的营销空间。对于希望拓展海外市场的企业来说,使用Instagram进行引流和推广是一个高效且安全的选择。为了更高效地管理和运营多个Inst…

Python 实现股票指标计算——VR

VR (Volume Ratio) - 成交量变异率 1 公式 AV 股价上升日成交量;AVS N日内AV求和BV 股价下跌日成交量;BVS N日内BV求和CV 股价平盘日成交量;CVS N日内CV求和VR (AVS1/2CVS) ➗ (BVS1/2CVS) ✖ 100MAVR VR的M日简单移动平均 2 数据…

HDU1032——The 3n + 1 problem,HDU1033——Edge,HDU1034——Candy Sharing Game

目录 HDU1032——The 3n 1 problem 题目描述 运行代码 代码思路 HDU1033——Edge 题目描述 运行代码 代码思路 HDU1034——Candy Sharing Game 题目描述 运行代码 代码思路 HDU1032——The 3n 1 problem 题目描述 Problem - 1032 运行代码 #include <iostr…

相信开源的力量,MoonBit 构建系统正式开源

MoonBit 构建系统正式开源 作为由 AI 驱动的云服务和边缘计算开发者平台&#xff0c;MoonBit 自设计之初便注重工具链与语言的协同效果。MoonBit 为开发者提供了一套开箱即用的工具链&#xff0c;包括集成开发环境&#xff08;IDE&#xff09;、编译器、构建系统和包管理器&…

android audio不同音频流,(六)settings内音频流音量调整

&#xff08;1&#xff09;settings内&#xff0c;可设置音频流音量&#xff0c;如下图&#xff1a; &#xff08;2&#xff09;settings调整音量条进度&#xff0c;会触发SeekBarVolumizer对象&#xff1a; SeekBarVolumizer文件路径&#xff1a; frameworks/base/core/java/…

【MySQL进阶之路 | 高级篇】事务的ACID特性

1. 数据库事务概述 事务是数据库区别于文件系统的重要特性之一&#xff0c;当我们有了事务就会让数据库始终保持一致性&#xff0c;同时我们还能通过事务的机制恢复到某个时间点&#xff0c;这样可以保证给已提交到数据库的修改不会因为系统崩溃而丢失。 1.1 基本概念 事务&…

OpenCV图像滤波(1)双边滤波函数bilateralFilter的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 功能描述 bilateralFilter是图像处理和计算机视觉领域中的一种高级图像滤波技术&#xff0c;特别设计用于在去除噪声的同时保留图像的边缘和细节。相比于传…

React搭建Vite项目及各种项目配置

1. 创建Vite项目 在操作系统的命令终端&#xff0c;输入以下命令&#xff1a; yarn create vite 输入完成以后输入项目名称、选择开发框架&#xff0c;选择开发语言&#xff0c;如下图所示&#xff0c;即可完成项目创建。 注意事项&#xff1a; 1. Node版本必须符合要求&…

OceanBase v4.2 特性解析:如何实现表级恢复

背景 在某些情况下&#xff0c;你可能会因为误操作而遇到表数据损坏或误删表的情况。为了能在事后将表数据恢复到某个特定时间点&#xff0c;在OceanBase尚未有表级恢复功能之前&#xff0c;你需要进行以下步骤&#xff1a; 利用OceanBase提供的物理恢复工具&#xff0c;您可…

Linux云计算 |【第一阶段】SERVICES-DAY6

主要内容&#xff1a; Linux容器基础、Linux容器管理、podman命令行、管理容器进阶 实操前骤&#xff1a;安装 RHEL8.2 虚拟机 1.选择软件包&#xff1a;rhel-8.2-x86-dvd.iso&#xff1b; 2.内存2048M&#xff1b; 3.时区选择亚洲-上海&#xff0c;带GUI的服务器&#xff1b…

使用kali对操作系统和网络服务类型进行探测

1&#xff0e;在Kali终端中输入命令“nmap –sS –n -O 192.168.2.2”&#xff0c;探测目标主机的操作系统类型 2&#xff0e; 在Kali终端中输入命令“nmap –sV -n 192.168.2.2”&#xff0c;探测目标主机开启的网络服务类型 3.在Kali终端中输入命令“nmap –A -n 192.168.2.2…

vue3前端开发-小兔鲜项目-产品详情基础数据渲染

vue3前端开发-小兔鲜项目-产品详情基础数据渲染&#xff01;这一次内容比较多&#xff0c;我们分开写。第一步先完成详情页面的基础数据的渲染。然后再去做一下右侧的热门产品的列表内容。 第一步&#xff0c;还是老规矩&#xff0c;先准备好接口函数。方便我们的页面组件拿到对…