首页 > 数据库 >脏读!幻读!不可重复读!mysql并发事务引发的问题

脏读!幻读!不可重复读!mysql并发事务引发的问题

时间:2024-09-19 21:14:28浏览次数:10  
标签:事务 读取 幻读 脏读 提交 mysql 数据

脏读!幻读!不可重复读!mysql并发事务引发的问题

并发事务引发的三个问题

①脏读

脏读(Dirty Read) 是数据库事务隔离级别中的一种现象。它发生在两个事务并发执行时,一个事务能够读取到另一个事务尚未提交的修改。

脏读的具体情况

  1. 事务A 对某个数据进行了修改,但尚未提交。
  2. 事务B 在事务A提交之前读取了该数据的修改结果。
  3. 如果此时事务A发生回滚(撤销未提交的更改),那么事务B读取到的实际上是一个无效的、更改后被撤销的数据。因为事务A的更改最终没有被提交,所以事务B读到的数据是不正确的,称为“脏数据”。

不可重复读

是指在一个事务中多次读取同一条数据时,读取的结果不一致,因为在两次读取之间,另一事务对该数据进行了修改并提交。 一个事务中可以进行多次读取,比如这个事务开始的时候读取一次,结束的时候读取一次。两次读取的结果不一样,这个就是不可重复读

不可重复读的具体情况

  1. 事务A 在第一次读取某条记录时,得到了一个值。
  2. 事务B 在事务A的第一次读取和第二次读取之间,对该记录进行了更新并提交了修改。
  3. 事务A 在第二次读取时,发现同一条记录的数据已经发生了变化,和第一次读取的结果不一致。

这种情况就是所谓的“不可重复读”,因为事务A无法在整个事务中多次读取到相同的结果。

幻读

是一种事务并发问题,发生在一个事务(事务A)执行了多次相同的查询时,发现结果集中出现了新的“幻影”行,即记录的数量发生了变化,通常是因为另一个事务(事务B)在这期间插入或删除了数据。

幻读的具体情况:

  1. 事务A 执行了一次查询,获得了一个结果集。
  2. 事务B 在事务A的查询之后,插入了符合事务A查询条件的新数据或删除了部分数据,并提交了事务。
  3. 事务A 再次执行同样的查询时,结果集中包含了事务B插入的“新”数据,或者缺少了事务B删除的数据。

这就是幻读现象,因为事务A无法保证每次查询的结果集保持一致。

标签:事务,读取,幻读,脏读,提交,mysql,数据
From: https://www.cnblogs.com/nicebaoke/p/18421368

相关文章

  • mysql容器使用
    一、镜像使用的部分介绍创建一个简单的mysql容器dockerrun--namesome-mysql-eMYSQL_ROOT_PASSWORD=my-secret-pw-dmysql:tag宿主机没有安装msql的情况下,可以通过docker命令连接mysql通过容器连接远程mysqldockerrun-it--rmmysqlmysql-hsome.mysql.host-usom......
  • MySQL之事务
    事务的简介:事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。例如生活中的转账事务的操作:方式一:关闭自动提交模式使用步骤:关闭自动提交模式:set@@autocommit=0;执行......
  • cover MySQL三部曲备份【逻辑备份+物理备份】脚本,生产实践
    前言:逻辑备份[mysqldump]物理备份[Xtrbackup]1、mysqldump全备建议手动制定库,不要选择–all,容易在数据恢复时发生问题–set-gtid-purged=OFF选项,在备份时会记录binlog日志,如果不加,不记录binlog日志,所以在我们做主从用了gtid时,用mysqldump备份时就要加–set-gtid-pur......
  • 基于SpringBoot+Vue+MySQL的智能物流管理系统
    系统展示系统背景  随着信息技术的飞速发展和电子商务的蓬勃兴起,智能物流管理系统的需求日益迫切。传统的物流管理方式已难以满足高效、精准、实时的管理需求。因此,基于SpringBoot、Vue和MySQL的智能物流管理系统应运而生。该系统旨在通过现代化的技术手段,实现物......
  • 2024Mysql And Redis基础与进阶操作系列(6)作者——LJS[含MySQL 多表之一对一/多;多对多;
    MySQL多表操作1多表关系简介1.1一对一关系比如1.2一对多/多对一关系比如:实现规则:1.3多对多关系举例:规则:2.多表联合查询简介多表查询有以下分类知识补充——笛卡尔积(了解即可)交叉连接查询[产生笛卡尔积]内连接查询(使用的关键字innerjoin--inner可以省......
  • 支持 128TB 超大存储,GaussDB (for MySQL) 如何轻松应对海量数据挑战
    本文分享自华为云社区《【选择GaussDB(forMySQL)的十大理由】之二:128TB超大存储》,作者:GaussDB数据库。大数据时代的挑战随着互联网、大数据等行业的迅猛发展,企业的数据流量呈现爆炸式增长,数据库作为数据存储的核心,其承载的数据量越来越大。近十年,企业数据量从GB发展到TB,甚......
  • mysql 将A库的表名和表字段注释,迁移到另外一个库中,生成alter 语句
    表备注--获取用于添加表备注的SQL语句SELECTCONCAT('ALTERTABLE目标数据库名.',TABLE_NAME,'COMMENT=\'',TABLE_COMMENT,'\';')ASalter_table_comment_sqlFROMINFORMATION_SCHEMA.TABLESWHERETABLE_SCHEMA='......
  • MySQL零基础入门教程-1 mysql安装卸载、启动关闭、常用命令、sql语句分类(非常详细),基础
    教程来源:B站视频BV1Vy4y1z7EX001-数据库概述_哔哩哔哩_bilibili我自己听讲收集整理的课程的完整笔记,供大家学习交流吧:夸克网盘分享本文内容为完整笔记的第一篇一、数据库概述1、什么是数据库?什么是数据库管理系统?什么是SQL?他们之间的关系是什么?P1、P2数据库英文单词DataBase,简称DB,......
  • 支持128TB超大存储,GaussDB(for MySQL)如何轻松应对海量数据挑战
    摘要:华为云数据库GaussDB(forMySQL)基于华为最新一代DFV存储,采用计算存储分离架构,最多支持128TB的海量存储。本文分享自华为云社区《【选择GaussDB(forMySQL)的十大理由】之二:128TB超大存储》,作者:GaussDB数据库。大数据时代的挑战随着互联网、大数据等行业的迅猛发展,企业的数据......
  • 2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单
    目录1MySQL数据库基本操作-DQL-基本查询1.2SQL概述1.3SQL类2.SQL语言的规则与规范2.1基本规则2.2SQL大小写规范推荐采用统一的书写规范:2.3注释2.4命名规则(了解即可)举例:两句是一样的,不区分大小写创建表格order使用``飘号,因为order和系统关键字或系统函数名......