【MySQL】事务

事务是一组操作的集合,我们将一组操作视为一个整体,所以事务里面的操作的时候要么同时成功,要么同时失败,之所以会有事务也是因为我们在实际生活中会用到
最典型的例子就是转账操作:A向B进行转账,A这边扣款成功的同时B那边一定是收款成功的,如果没有事务的话就会出现A扣款成功但B没有收到款的情况

文章目录

  • 1.事务的操作
  • 2.事务的特性
  • 3.并发事务的问题
  • 4.事务隔离级别

1.事务的操作

正常提交事务的流程为: 开始事务->执行操作->提交事务
如果出现异常的话则需要回滚事务

开启事务:
  begin;
提交事务:
  commit;
回滚事务:
  rollback;

begin之后加上要执行的SQL语句即可,然后是commit,提交失败则执行rollback
MySQL的事务默认是自动提交的,当执行一条DML语句时MySQL会自动提交事务,如果你想要修改MySQL提交事务的方式

select @@autocommit;   查看事务提交方式(为啥这两个@颜色还不一样呢(⊙_⊙))
set @@autocommit=0;    0为手动提交,1为自动提交

2.事务的特性

  • 原子性 : 事务是不可分割的最小的操作单元,里面的操作要么全部成功,要么全部失败

  • 一致性 : 事务完成的时候必须使所有的数据保持一致状态

  • 隔离性 : 数据库系统提供的隔离机制,目的是保证事务在不受外部并发操作影响的环境下运行

  • 持久性 : 一个事务一旦被提交,它对数据库中数据所做的改变是永久的

针对隔离性,我们来讲下如果没有隔离性并发事务会造成的问题

3.并发事务的问题

最常见的问题有脏读,不可重复读和幻读

  1. 脏读:指一个事务读取到另一个事务还未提交的数据,如下图
    在这里插入图片描述
    事务1修改了数据,但是还没有提交,此时事务2对数据进行查询,那么事务2就会查询到已经被修改但是还未提交的数据

  2. 不可重复读:一个事务先后读取同一条记录,但两次读取出来的结果是不同的,如图
    在这里插入图片描述
    事务1在两次查询期间,事务2对数据进行了修改并提交事务,导致事务1两次查询的数据结果不一致

  3. 幻读:幻读是在解决不可重复读的基础上出现的新问题,事务在查询某个数据的时候发现数据不存在,于是进行插入数据,但是在插入数据的时候发现数据又存在,就像出现了幻觉一样,如图
    在这里插入图片描述
    由于解决了不可重复度,所以事务1两次select结果均为未找到,但是却无法插入数据

4.事务隔离级别

隔离级别脏读不可重复读幻读
读未提交(read uncommited)×××
读已提交(read commited)××
可重复读(repeatable read)×
串行化(serializable)

上述4个级别,串行化隔离级别最高,可以解决所有的并发事务问题,但同时性能也是最差的,这就需要根据实际情况来选择事务的隔离级别了
在MySQL中默认的隔离级别是可重复读
设置事务的SQL语句如下:

select @@tx_isolation;  查看事务隔离级别(个人使用的5.6版本的SQL语句,下面的是高版本的SQL语句)
select @@transaction_isolation;  

set [session/global] transaction isolation level 隔离级别;  设置事务隔离级别,set session是仅当前客户端窗口有效,set global则是所有客户端的窗口都有效

MySQL的基础部分到这基本结束了,主要包括基础的SQL语句,MySQL的函数,数据约束,多表查询和这篇的事务,下一篇开始就开始进阶的内容了,完

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

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

相关文章

LMS,RGB,XYZ色彩空间转换

前言 首先需要指明本文中描述的R,G,B并非通常的sRGB中的三个分量R,G,B,而是波长分别为700nm,546.1nm,435.8nm的单色红光,单色绿光,单色蓝光。sRGB中的RGB中的红色、绿色、蓝色已经不是单色光了。虽然习惯上大家都叫RGB…

网络安全里的主要岗位有哪些?小白如何快速入门?

入门Web安全、安卓安全、二进制安全、工控安全还是智能硬件安全等等,每个不同的领域要掌握的技能也不同。 当然入门Web安全相对难度较低,也是很多人的首选。主要还是看自己的兴趣方向吧。 本文就以下几个问题来说明网络安全大致学习过程👇 网…

SpringCloud微服务调用方式(RestTemplate)

服务调用方式 RPC和HTTP 无论是微服务还是SOA,都面临着服务间的远程调用。那么服务间的远程调用方式有哪些呢? 常见的远程调用方式有以下2种: RPC:Remote Produce Call远程过程调用,类似的还有 。自定义数据格式&am…

learn C++ NO.4 ——类和对象(2)

1.类的6个默认成员函数 1.1.默认成员函数的概念 在 C 中,如果没有显式定义类的构造函数、析构函数、拷贝构造函数和赋值运算符重载函数,编译器会自动生成这些函数,这些函数被称为默认成员函数。 class Date { };初步了解了默认成员函数&am…

STL-常用算法(二.拷贝 替换 算术 集合)

开篇先附上STL-常用算法(一)的链接 STL-常用算法(一.遍历 查找 排序)_小梁今天敲代码了吗的博客-CSDN博客 目录 常用拷贝和替换算法: copy函数示例:(将v1容器中的元素复制给v2) replace函数示例&#…

Java 9 - 18 各个版本新特性总结

【 Java 9 - 18 各个版本新特性总结,B站视频介绍】https://www.bilibili.com/video/BV1PT411P7Wn?vd_source5a3a58ca0e99223ffb58cddf2f3a7282 一、模块化引入 模块是 Java 9 中新增的一个组件,可以简单理解为是package的上级容器,是多个pa…

gitlab建立新分支提交,cherry-pick部分更新

gitlab介绍 GitLab是一个基于Git的在线代码托管和协作平台,提供源代码管理、单元测试、CI/CD构建、代码审查等功能。它是一个开放源代码的Git仓库管理系统,使用 Ruby on Rails 构建GitLab 不仅具有自己的 Git 仓库管理系统,还具有很多其他的…

网络协议与攻击模拟-11-DHCP协议原理

DHCP 协议 1、掌握 DHCP 的工作原理 2、会在 Windows server 上去部署 DHCP 服务 3、抓流量 .正常 收到攻击后 一、 DHCP 1、 DHCP 基本概念 dhcp (动态主机配置协议):主要就是给客户机提供 TCP / IP 参数( IP 地…

App外包开发上线Google Play流程

完成App开发后需要在各大应用市场上线,国内的应用市场比较多,各自的规则也不相同,上线审核也比较复杂;国外上线主要是Google Play市场,它更重视隐私的保护,必须严格按照规范来保护个人隐私,因此…

【C++】模板的一点简单介绍

模板 前言泛型编程函数模板概念格式函数模板的原理函数模板的实例化 类模板类模板的定义格式类模板的实例化 前言 这篇博客讲的是模板的一些基本知识,并没有那么深入,但是如果你是为了过期末考试而搜的这篇博客,我觉得下面讲的是够了的。 之…

阿里云、腾讯云、移动云飙“价”:智能普惠成新风向?

经过过去一年的“低迷”境况之后,2023年云服务商因为AI大模型的爆发,重新燃起了斗志。站在当下的时间节点,云服务商们也在重新思考如何在新形势下,让自己占据更大的优势,于是一场围绕“技术竞争与市场争夺”的新战争打…

【总结】Numpy2

Numpy 1. 数组和数的运算 array1 np.arange(1,10) array1 # array([1, 2, 3, 4, 5, 6, 7, 8, 9]) array1 10 # array([11, 12, 13, 14, 15, 16, 17, 18, 19]) array1 - 10 # array([-9, -8, -7, -6, -5, -4, -3, -2, -1]) array1 * 10 # array([10, 20, 30, 40, 50, 60, 70…

3-《安卓基础》

3-《安卓基础》 一.Android系统架构二.四大组件1. Activity1.1 生命周期1.2. Activity四种启动模式1.3.Activity任务栈的概念1.4 面试题面试题1:onSaveInstanceState(Bundle outState),onRestoreInstanceState(Bundle savedInstanceState) 的调用时机&am…

小黑子—Java从入门到入土过程:第十一章 - 网络编程、反射及动态代理

Java零基础入门11.0 网络编程1. 初识网络编程2. 网络编程三要素3.IP三要素3.1 IPV4的细节3.1.1特殊的IP地址3.1.2 常用的CMD命令 3.2 InetAddress 的使用3.3 端口号3.4 协议3.4.1 UDP协议3.4.1 - I UDP 发送数据3.4.1 - II UDP 接收数据3.4.1 - III UDP 练习(聊天室…

前端列表页+element-puls实现列表数据弹窗功能

效果图: 这是一个修改的弹窗,我们要实现的功能是,在列表,点击修改按钮时,将数据带入到弹窗里面,点击保存时关闭弹窗。 1,点击修改展开弹窗 使用 eldialog组件,v-model绑定的值为tru…

Godot引擎 4.0 文档 - 入门介绍 - 学习新功能

本文为Google Translate英译中结果,DrGraph在此基础上加了一些校正。英文原版页面: Learning new features — Godot Engine (stable) documentation in English 学习新功能 Godot 是一个功能丰富的游戏引擎。有很多关于它的知识。本页介绍了如何使用…

迪赛智慧数——柱状图(基本柱状图):全球自动化无人机智能支出预测

效果图 全球自动化无人机智能支出及预测分析,2022年机器人流程自动化支出10.4十亿美元,智能流程自动化支出13十亿美元,人工智能业务操作达10.8十亿美元,未来,这些数字将进一步增长,自动化无人机智能也将拥有…

华为OD机试真题 Java 实现【天然蓄水池】【2023Q1 200分】

一、题目描述 公元2919年,人类终于发现了一颗宜居星球——X星。现想在X星一片连绵起伏的山脉间建一个天然蓄水库,如何选取水库边界,使蓄水量最大? 要求: 山脉用正整数数组s表示,每个元素代表山脉的高度。…

Java基础-面向对象总结(3)

本篇文章主要讲解Java面向对象的知识点 面向对象的三大特性类的扩展(抽象类,接口,内部类,枚举) 目录 面向对象和面向过程的区别? 面向对象的五大基本原则 面向对象三大特性 继承 怎么理解继承 ? 继承和聚合的区别? 封装 多态 什么是多态 什么是运行时多…

数字识别问题

文章目录 6.1 MNIST数据处理6.2.1 训练数据6.2.2 变量管理6.3.1 保存模型6.3.1 加载计算图6.3.1 加载模型6.3.2 导出元图 6.1 MNIST数据处理 在直接在第6章的目录下面创建文件 compat.v1.是tensorflow2.x的语法,全部删掉 删除compat.v1.后的代码 # -*- coding: …
最新文章