MySql并发事务问题

 事务


事务概念:

        事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。

事务的特性:ACID:

小结:

ACID,分别指的是:原子性、一致性、隔离 性、持久性;

举个例子:

A向B转账500,转账成功,A扣除500元,B增加500元,原子操作体现在要么都成功,要么都失败

在转账的过程中,数据要一致,A扣除了500,B必须增加500

在转账的过程中,隔离性体现在A像B转账,不能受其他事务干扰

在转账的过程中,持久性体现在事务提交后,要把数据持久化(可以说是落盘操作)

并发事务问题

并发事务概念:

并发事务是指在数据库系统中,多个事务同时对数据进行读写和修改的过程。

并发事务问题:

1.脏读 (违反了事务的隔离性)

例:事务A先查询id为1的数据,再修改id为1的数据。修改完以后事务A还没提交,这时候事务B也来查询id为1的数据,但这时候事务B已经可以读到A修改完的数据了。这就是脏读。(如果A事务回滚,但B已经读到了A修改的数据,造成了数据不一致)

2.不可重复读 (违反了事务的一致性)

例:事务A先查询id为1的数据,再执行某个逻辑。这时事务B修改id为1的数据。事务A再去查询id为1的数据,却和之前不一样了!简单来说就是:在同一个事务内,查询两次同一条数据,却出现不同结果!

3.幻读 (违反了事务的隔离性)(在已经解决了不可重复读的基础上)

例:事务A查询id为1的数据,发现数据库中没有。这个时候事务B来了,正好往数据库中插入了一条id为1的数据并且提交了事务。这个时候,事务A进行插入操作,就直接报错了:里面已经有了id为1的数据(假设我们已经解决了不可重复读的问题)。但A再次进行查询,查询结果和第一次一样,发现还是没有id为1的数据,但插入就是报错,这就是幻读的问题。

注意:幻读是在解决了不可重复读的基础上,不可重复读是读取了其他事务更改的数据,针对update操作;幻读是读取了其他事务新增的数据,针对insert和delete操作。

解决方案:

注:这里✔表示存在该问题,× 表示解决该问题。

小结

1.事务并发问题:

        第一是脏读, 当一个事务正在访问数据并且对数据进行了修改,而这种修改 还没有提交到数据库中,这时另外一个事务也访问了这个数据,因为这个数 据是还没有提交的数据,那么另外一个事务读到的这个数据是“脏数据”,依 据“脏数据”所做的操作可能是不正确的。

        第二是不可重复读:比如在一个事务内多次读同一数据。在这个事务还没有 结束时,另一个事务也访问该数据。那么,在第一个事务中的两次读数据之 间,由于第二个事务的修改导致第一个事务两次读取的数据可能不太一样。 这就发生了在一个事务内两次读到的数据是不一样的情况,因此称为不可重 复读。

         第三是幻读(Phantom read):幻读与不可重复读类似。它发生在一个事务 (T1)读取了几行数据,接着另一个并发事务(T2)插入了一些数据时。在 随后的查询中,第一个事务(T1)就会发现多了一些原本不存在的记录,就 好像发生了幻觉一样,所以称为幻读。

2.事务隔离:

        第一个是,未提交读(read uncommitted)它解决不了刚才提出的所有问 题,一般项目中也不用这个。

        第二个是读已提交(read committed)它能解 决脏读的问题的,但是解决不了不可重复读和幻读。

        第三个是可重复读 (repeatable read)它能解决脏读和不可重复读,但是解决不了幻读,这个 也是mysql默认的隔离级别。

        第四个是串行化(serializable)它可以解决刚 才提出来的所有问题,但是由于让是事务串行执行的,性能比较低。所以, 我们一般使用的都是mysql默认的隔离级别:可重复读。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Chapter 18 Current-Programmed Control 峰值电流模控制

Chapter 18 Current-Programmed Control 峰值电流模控制 对于PWM converter, 其输出电压由占空比d控制. 我们将直接控制占空比d称为电压模控制, 因为输出电压和占空比成正比.还有一种广泛应用的控制方法是控制开关管峰值电流的. 我们称为电流模控制. 这一章介绍峰值电流模控制…

UML2.0在系统设计中的实际使用情况

目前我在系统分析设计过程中主要使用UML2.0来表达,使用StarUML软件做实际设计,操作起来基本很顺手,下面整理一下自己的使用情况。 1. UML2.0之十三张图 UML2.0一共13张图,可以分为两大类:结构图-静态图,行…

【轻松一刻】中国茶叶探索奇妙之旅

文章目录 茶多酚 茶叶大类 龙井茶 泡茶方法 茶叶保存 参考资料 茶多酚 茶多酚是形成茶叶色香味的主要成份之一,也是茶叶中有保健功能的主要成份之一。茶多酚的副产品咖啡因,又称为咖啡碱,能兴奋大脑皮层,所以喝茶有提神作用…

代码随想录-算法训练营day04【两两交换链表中的节点、删除链表的倒数第N个节点、链表相交、环形链表II】

专栏笔记:https://blog.csdn.net/weixin_44949135/category_10335122.html 第二章 链表part02● day 1 任务以及具体安排:https://docs.qq.com/doc/DUG9UR2ZUc3BjRUdY ● day 2 任务以及具体安排:https://docs.qq.com/doc/DUGRwWXNOVEpyaVpG…

【原创】springboot+vue校园座位预约管理系统设计与实现

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…

Vivado功耗基础之功耗评估器XPE使用详述

目录 一、前言 二、XPE环境配置 2.1 XLSM下载 2.2 EXCEL启用宏 2.3 打开XLSM 三、XPE操作 3.1 单元格颜色含义 3.2 Settings表格 3.3 片上功耗表格 3.4 电源供电表格 3.5 总结表格 3.6 工具栏 四、参考资料 一、前言 XPE(Xilinx Power Estimator)是一个在工程的预…

【C++航海王:追寻罗杰的编程之路】C++的类型转换

目录 1 -> C语言中的类型转换 2 -> 为什么C需要四种类型转换 3 -> C强制类型转换 3.1 -> static_cast 3.2 -> reinterpret_cast 3.3 -> const_cast 3.4 -> dynamic_cast 4 -> RTTI 1 -> C语言中的类型转换 在C语言中,如果赋值运…

八股面试速成—Java语法部分

暑期实习面试在即,这几天八股和算法轮扁我>_ 八股部分打算先找学习视屏跟着画下思维导图,然后看详细的面试知识点,最后刷题 其中导图包含的是常考的题,按照思维导图形式整理,会在复盘后更新 细节研究侧重补全&a…

15.5 二叉排序树原理及建树实战

二叉树模拟网站&#xff1a;Binary Search Tree Visualization (usfca.edu) 图 代码&#xff1a; #include <stdio.h> #include <stdlib.h> typedef int KeyType; typedef struct BSTNode{KeyType key;struct BSTNode *lchild, *rchild; }BSTNode, *BiTree; int …

[报错解决]源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。

目录 报错信息解决办法 spring整合mvc时&#xff0c;遇到的404报错&#xff0c;梳理mvc知识供参考供 报错信息 解决办法 Controller RequestMapping("user") public class UserController {//spring整合webmvc// 请求地址 http://localhost:7070/user/quickRequest…

【游戏分析】非游戏领空追字符串来源

通过NPC名称找NPC数组 扫描 NPC名字 ASIC型 发现全部都有后缀 那么采用 字节集的方式去扫描 也是扫不到 说明:不是ASIC型字符串 扫描 NPC名字 Unicode型 没有结果 那么转换成字节集去扫描 终于发现结果了 把结果挨个修改字符串 发现 其中两个是可以用的 22和23 …

SAR教程系列7——在cadence中用Spectrum工具FFT仿真ADC的ENOB、SNR等动态性能指标

首先在仿真之前&#xff0c;你得有一个ADC。然后是思考如何仿真的问题&#xff0c;如何加激励&#xff0c;如何使用相关工具查看仿真结果。假定你有一个可以仿真的ADC&#xff0c;大致经过下列步骤可以得到ADC的相关动态性能指标。 第一步&#xff1a;在ADC后面接一个理想的DA…

实战解析:接口限流的一次简单实践

1.写这篇文章的来由 有一段时间里&#xff0c;博客总是三天两头被打&#xff0c;其中就遇到了恶意刷接口的手段&#xff0c;对方明显使用的代码IP&#xff0c;由于博客并没有做这方面的措施&#xff0c;加上被大量盗刷的接口刚好是数据量最大的一篇文章数据&#xff0c;所以不…

MySql下载安装及使用

1.MySql下载 下载页 解压到想要安装的目录 2.配置系统环境 以管理员身份运行cmd命令行&#xff1a;输入mysql 回车&#xff0c;输出以下内容&#xff0c;表示mysql安装好了 3.初始化mysql(不设置无密码)&#xff0c;执行以下命令 mysqld --initialize-insecure执行这个命…

web学习笔记(五十三)身份认证

目录 1.Web 开发模式 1.1 服务端渲染的 Web 开发模式 1.2 服务端渲染的优缺点 1.3 前后端分离的 Web 开发模式 1.4 如何选择 Web 开发模式 2. 身份认证 2.1 Session 认证机制 3. 在 Express 中使用 Session 认证 3.1 安装express-session 中间件 3.2 配置 express-ses…

课程16 吸收·色散·散射(视频P55-P60)

吸收 色散 散射 吸收、色散、散射并称为分子光学&#xff1b;在一介质中&#xff0c;光的强度随传播距离而减少的现象&#xff0c;称为介质对光的吸收&#xff1b;介质的不均匀性将导致光的散射&#xff0c;散射到各个方向。光在介质中的传播速度小于真空光速&#xff0c;最终…

dcm文件数据学习

simpleITK读取数据 import SimpleITK as sitk import numpy as np import matplotlib.pyplot as plt base_path "/Users/yxk/Desktop/test/" image sitk.ReadImage(base_path"000000.dcm") # type(image) <class SimpleITK.SimpleITK.Image> imag…

789. 数的范围 (二分学习)左端大右,右端小左

题目链接https://www.acwing.com/file_system/file/content/whole/index/content/4317/ 当求左端点时&#xff0c;条件是a【mid】大于等于x&#xff0c;并把右端点缩小。 当求右端点时&#xff0c;条件是a【mid】小于等于x&#xff0c;并把左端点扩大。 1.确定一个区间&…

机器人力觉控制(力源)原理及力矩传感器性能分析

机器人力控原理及其性能分析 在机器人的操作任务中&#xff0c;处理机器人和环境之间的物理接触是非常重要的。由于机器人系统的复杂性和不确定性&#xff0c;纯运动控制往往是不够的&#xff0c;因为即使是最精确的模型也无法完全准确地预测所有可能的情况。 当机器人在与环境…

Qt5.15以上版本在线安装步骤,可选择更多早期版本

以ubuntu系统为例&#xff1a; 1、先去下载在线安装程序&#xff1a; https://download.qt.io/official_releases/online_installers/ 选择合适的版本&#xff0c;这里是在x64机器的ubuntu虚拟机里安装QT&#xff0c;所以选择如下版本&#xff1a; 或者直接在终端执行如下命令…