MySql -- 事务

news2024/10/7 13:14:14

目录

1.概念

2.事务的运用场景

3.事务的四大特点

4.执行事务带来的问题 

4.1 脏读

4.2 不可重复度

4.3 幻读

5. MySQL中事务的隔离级别


1.概念

事务就是把若干个独立操作打包成一个整体而诞生的一种功能.

2.事务的运用场景

比如:A——>B 转账500
A的余额-500

update 账户表 set balance = balance-500 where name = "A";

 B的余额+500

update 账户表 set balance = balance+500 where name= "B";

在执行这个转账操作时,可能会出现一个问题:当A转出去500时,B还没有接收到,但是机器崩了。显然这种状态不科学,但是利用 事务的原子性 可以解决这个问题.

3.事务的四大特点

1.原子性   保证为一个整体,不可再分割.

2.一致性   在事务执行前后,数据库中的数据都得是合法的。例如:转账完成后,不能够出现账户为负数的这种情况

3.持久性   事务一旦提交后,就持久化存储起来了,数据就存储在硬盘当中了。

4.隔离性   为了解决并发执行事务引起的问题(下面会单独介绍)

4.执行事务带来的问题 

4.1 脏读

举例:

      有一天,当老师在写代码的时候,有位同学在老师的身边的走过,然后喵了一眼老师的电脑屏幕,看到了代码中的一些内容,然后就走了,等到上课的时候,这位同学回忆自己曾经看到的代码积极回答问题,但是老师说他回答的错误,这位同学心里就想,自己明明在老师看到了这道题的代码为什么会错.原因是老师当时把代码写错了.正好让自己给看到了,等这位学生走后,老师检查出了错误并改正.

 

定义:

一个事物A正在对数据进行修改,在还没有提交志气啊,另外一个事物B也对同一个数据进行了读取,此时B的读取操作就被称为"脏读",阅读到的数据也被成为"脏数据".

  

解决方法:

为了解决脏读的问题,MySQL引进了"写操作加锁"的机制.也就是在写代码的过程中,谁也不许看我写的代码.只能等我写完代码,才能进行阅读.

但是,此时写操作和读操作无法并发执行了.,这就降低了并发程度,但是提高了数据隔离性(数据的准确性)

4.2 不可重复度

举例:

        还是在这一天,老师和同学们约定好,大家都不要看我的代码,等老师讲代码传入到码云上大家再进行阅读.(这就给写进行加锁操作)

        但是,这一天老师上传了码云版本1的代码,同学们正在积极的阅读中,此时唰的一下,代码发生了改变,同学们老师原因,原来在同学们阅读代码的时候,老师将自己版本2的代码上传到了码云,使得代码发生了改变.这个过程就发生了,不可重复读.

 

定义:

事务1已经提交了数据,此时事务2开始读取数据,在读取的过程中,事务3又提交了新的数据.此时意味着同一个事物2之内,多次读出来的数据是不一样的.

 

解决方法:

为了解决这个问题,引进了"给读加锁"的机制,也就是在同学们进行阅读的时候,老师不可以再上传代码,

通过给读加锁这个机制,又进一步降低了事务并发处理能力,提高了事务的隔离性(数据的准确性又得到了提高).

4.3 幻读

举例:

当前约定好读操作和写操作进行加锁,解决了脏读和不可重复读的问题.

由于约定了读加锁,同学读的时候,老师不能进行修改代码了,只能干等着,所以老师想了一个办法,同学们读Java1文件的时候,老师修改Java2文件,但是个别情况下,有的学生不能接受,因为一开始没有Java2文件,突然冒出来一个Java2文件,无法接收.

 

定义:

在读操作和写操作加锁的情况下,一个事物读取同一个数据,得到的数据值是一样的,但是结果集不一样.这就称为幻读.

 

解决方法:

数据库使用"串行化"这样的方式来解决幻读,彻底放弃并发处理事务,一个接一个的串行的处理事务.

这样做,并发程度是最低的但是隔离性确实最高的,数据也是最准确的.

5. MySQL中事务的隔离级别

 

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

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

相关文章

【Qt编程之Widgets模块】-007:QStandardPaths类使用方法

1 头文件&#xff1a; #include <QStandardPaths>2 详细说明 QStandardPaths类提供用于访问标准路径的方法&#xff0c;该类包含用于查询本地文件系统上的标准位置的函数&#xff0c;用于常见任务&#xff0c;如特定于用户的目录或系统范围的配置目录。 所谓系统标准路…

[pgrx开发postgresql数据库扩展]6.返回序列的函数编写(1)单值序列

上篇文章是中规中矩的标准计算函数&#xff0c;就算不用pgrx&#xff0c;也是可以正常理解的&#xff0c;所以基本上没有什么对于pgrx框架有关系的东西&#xff08;唯一有关系的东西&#xff0c;应该就是Rust的时间类型与pgrx的时间类型的计算了&#xff09;。 这篇文章会讲一…

Java面试(1)Java概述

文章目录 Java 概述1.什么是Java2. JDK1.5 之后的三大版本3. Jdk和Jre和JVM的区别4. 什么是跨平台性&#xff1f;原理是什么5. Java 语言有哪些特点?6. 什么是字节码&#xff1f;采用字节码的最大好处是什么7. 为什么不全部使用 AOT&#xff08;since JDK9&#xff09; 呢&…

马赛克处理

去取马赛克的网址&#xff1a; Redact • Photo - Free And Private Image Redaction In The Browser https://redact.photo/ REDACT.PHOTO &#xff08;照片马赛克处理在线工具&#xff09;简介 REDACT.PHOTO是一个照片马赛克处理在线工具&#xff0c;能够帮助我们非常方便…

2023自动化测试的10个最佳实践(建议收藏)

虽然大家都知道坚果是非常健康和有营养的&#xff0c;但是&#xff0c;当你尝试吃它的时候&#xff0c;我猜测过程都不会很顺利。现实就是那么相似&#xff0c;我们都知道测试自动化对软件开发有好处&#xff08;就像坚果对我们的身体一样&#xff01;&#xff09;&#xff0c;…

arcgis插件-带属性TXT转SHP数据(支持独立图层、追加到图层)

20230512记录更新 arcgis插件-带属性TXT转SHP数据&#xff08;支持独立图层、追加到图层&#xff09; 这个版本省略掉新建面图层&#xff0c;再在界面进行选择图层的操作。 界面简化到只需要一步操作&#xff0c;选择&#xff08;或者复制&#xff09;TXT文件所在路径&#x…

机器学习(二)决策树原理剖析及python实现

本篇介绍第二个机器学习算法&#xff1a;决策树算法&#xff0c;我们经常使用决策树处理分类问题&#xff0c;近来的调查表明决策树也是最经常使用的数据挖掘算法。 图1所示的流程图就是一个决策树&#xff0c;长方形代表判断模块&#xff08;decision block&#xff09;&…

[Android]AsyncChannel介绍

背景 在WifiManager.java中&#xff0c;随处可见这样的方法调用实现&#xff1a; 代码路径&#xff1a;frameworks/base/wifi/java/android/net/wifi/WifiManager.java public void connect(int networkId, ActionListener listener) {...getChannel().sendMessage(CONNECT_NE…

你真的会跟 ChatGPT 聊天吗?(下)

接《你真的会跟 ChatGPT 聊天吗&#xff1f;&#xff08;上&#xff09;》&#xff0c;本文下半部分没有无毛猫那么搞笑的内容啦&#xff01;即使如此&#xff0c;哪怕你对文中提及的技术不大了解&#xff0c;也可以毫无压力地看完这篇&#xff0c;描述如何更好地获得 ChatGPT …

视频怎么压缩到20M以内

视频怎么压缩到20M以内&#xff1f;我们知道在很多聊天软件中是限制传输的内容大小的&#xff0c;比如说视频大小会限制20M以内。还有就是我们在发一些邮件时&#xff0c;我们在上传附件的时候也是限制视频大小在20M以内。所以说我们有需要把视频压缩到20M以内的情况。那么针对…

记录一次Windows7操作系统渗透测试

#本文档仅用于实验&#xff0c;请勿用来使用恶意攻击&#xff01; 《中华人民共和国网络安全法》中&#xff0c;恶意破坏计算机信息系统罪在第二十七条被明确规定&#xff0c;规定内容为&#xff1a; 第二十七条 任何单位和个人不得为达到破坏计算机信息系统安全的目的&#x…

Linux发行版新秀:基于Ubuntu、系统核心 “不可变”

Vanilla OS 是近期才公开发布的 Linux 发行版&#xff0c;基于 Ubuntu 构建&#xff0c;免费且开源&#xff0c;默认桌面环境是 GNOME。虽然 Vanilla OS 的底层是 Ubuntu&#xff0c;但它并不是简单地基于 Ubuntu 进行 "remix"&#xff0c;而且外观看起来也不像 Ubun…

FreeRTOS:列表和列表项

要想看懂 FreeRTOS 源码并学习其原理&#xff0c;有一个东西绝对跑不了&#xff0c;那就是 FreeRTOS 的列表和列表项。列表和列表项是FreeRTOS的一个数据结构&#xff0c; FreeRTOS 大量使用到了列表和列表项&#xff0c;它是 FreeRTOS 的基石。要想深入学习并理解 FreeRTOS&am…

【LeetCode】环形链表II+结论证明

题目链接&#xff1a;环形链表II 题目&#xff1a;给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表…

Grafana系列-统一展示-7-ElasticSearch数据源

系列文章 Grafana 系列文章 ElasticSearch 数据源 Grafana内置了对Elasticsearch的支持。你可以进行多种类型的查询&#xff0c;以可视化存储在Elasticsearch中的日志或指标&#xff0c;并使用存储在Elasticsearch中的日志事件对图表进行注释。 配置 ES 数据源 关键的几项…

在两道多线程基础题“顺序打印”中对比一下Java中的wait()和join()

目录 一、基础 二、进阶 一、基础 有三个线程&#xff0c;线程名称分别为&#xff1a;a&#xff0c;b&#xff0c;c&#xff0c;每个线程打印自己的名称。 需要让他们同时启动&#xff0c;并按 c&#xff0c;b&#xff0c;a的顺序打印。 这道题要求打印 cba&#xff0c;且只打…

开发中proc文件系统的简单使用

使用proc文件系统 文章目录 使用proc文件系统1.meminfo文件2. free命令3、创建 /proc 节点4、使用 file_operations 实现 proc 文件读写 导向内核信息5、使用 seq_file 实现 proc 文件的读取 在Linux系统中&#xff0c; “/proc”文件系统十分有用&#xff0c; 它被内核用于向用…

可视化图表API格式要求有哪些?Sugar BI详细代码示例(4)

Sugar BI中的每个图表可以对应一个数据 API&#xff0c;用户浏览报表时&#xff0c;选定一定的过滤条件&#xff0c;点击「查询」按钮将会通过 API 拉取相应的数据&#xff1b;前面说过&#xff0c;为了确保用户数据的安全性&#xff0c;Sugar BI上的所有数据请求都在Sugar BI的…

进击数据基础设施新蓝海,厂商如何“择木而栖”?

文 | 螳螂观察 作者 | 李永华 多样的应用需求&#xff0c;倒逼底层存储能力不断升级&#xff1b; 复杂的数据状况&#xff0c;要求存储能够“兼容并蓄”&#xff1b; 客户企业在数字化方面的战略转型升级&#xff0c;总是触及到存储…… 当数据基础设施成为新的蓝海&#…

大学计算机基础-题库刷题-精选

题库刷题&#xff1a; 写在前面&#xff1a; 这个是我准备应对学校转专业考试而刷的题库&#xff0c; 也是大学计算机的题库&#xff0c;同样适用于大学计算机这门课的期末考试。 精选了一些重要的题目。 目录 题库刷题&#xff1a; 写在前面&#xff1a; 题目1&#x…