当前位置: 首页 > news >正文

【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的函数,数据约束,多表查询和这篇的事务,下一篇开始就开始进阶的内容了,完

相关文章:

【MySQL】事务

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

学习HCIP的day.03

目录 OSPF:开放式最短路径优先协议 OSPF的数据包 -- 5种 OSPF的状态机 OSPF的工作过程 OSPF的基础配置 关于OSPF协议从邻居建立成为邻接的条件 OSPF的接口网络类型 OSPF:开放式最短路径优先协议 无类别链路状态型IGP协议;由于其基于拓…...

Maven项目的配置

Maven是什么?它的作用是什么? Maven是一种开源的构建工具,它可以自动化构建、测试、部署和管理Java项目。它提供了一个中心化的构建过程,包括依赖管理、项目结构管理、插件管理等,使得开发人员更方便地维护和协作应用…...

Spring Boot使用(基础)

目录 1.Spring Boot是什么? 2.Spring Boot使用 2.1Spring目录介绍 2.2SpringBoot的使用 1.Spring Boot是什么? Spring Boot就是Spring脚手架,就是为了简化Spring开发而诞生的 Spring Boot的优点: 1.快速集成框架,提供了秒级继承各种框架,提供了启动添加依赖的功能 2.内…...

6WINDGate-overview

6WINDGate Overview Author:Once Day Date:2023年4月29日 本文是对6WIND官网文档的整理和翻译,仅供学习和研究之用,原始文章可参考下面文档: 6WINDGate Documentation - 6WIND6WINDGate Modules — 6WINDGate Modul…...

Java8新特性-流式操作

在Java8中提供了新特性—流式操作,通过流式操作可以帮助我们对数据更快速的进行一些过滤、排序、去重、最大、最小等等操作并且内置了并行流将流划分成多个线程进行并行执行,提供更高效、快速的执行能力。接下来我们一起看看Java8为我们新增了哪些便捷呢…...

Nautilus Chain Layer 3 圆桌会议圆满举办,超4.8K用户观看

在 4 月 21 日,Nautilus Chain 举办了以 “Layer 3 区块链的意义和发展以及Crypto的演变”为主题的线上圆桌会议,我们邀请了众多行业嘉宾包括 GitcoinDAO社区管理者Bob jiang、Whalers Community 发起者崔棉大师、Chatpuppy 联合创始人 古千峰、Whalers …...

本地elasticsearch中文分词器 ik分词器安装及使用

ElasticSearch 内置了分词器,如标准分词器、简单分词器、空白词器等。但这些分词器对我们最常使用的中文并不友好,不能按我们的语言习惯进行分词。 ik分词器就是一个标准的中文分词器。它可以根据定义的字典对域进行分词,并且支持用户配置自…...

Java 中的异常处理机制是什么?如何使用它来处理程序中的异常?(七)

Java 中的异常处理机制是一种重要的编程技术,它能够帮助程序员更好地管理程序中出现的异常情况。本文将详细介绍 Java 中的异常处理机制,并提供示例来说明如何使用异常处理机制来捕获和处理程序中的异常。 什么是异常? 在程序运行过程中&am…...

基于UDQ的并网单相逆变器控制【同步参考系下单相并网全桥正弦PWM逆变器闭环控制】(Simulink)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

JAVA开发——常用的注解

目录 spring spring MVC Spring Boot AOP MyBatis MyBatis-Plus JavaWeb开发 spring Autowired:自动安装,通过类匹配自动注册相应的Bean。 Component:将一个通用的 Java 类标记为 Bean,由 Spring 容器管理。 Controller&…...

【Java笔试强训 24】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥年终奖 …...

SpringCloud详解

SpringCloud是一个基于SpringBoot的分布式系统开发框架,它能够帮助我们快速、稳定地构建分布式系统。本篇博客将对SpringCloud进行详细解析,介绍SpringCloud的主要组件和相关应用场景,同时提供代码示例以帮助读者更好地掌握SpringCloud的实际…...

如何保障网络安全

网络安全是一个涵盖范围广、深入浅出的话题。随着互联网在现代社会中扮演的重要角色日益突出,网络安全问题成为各个领域所关注的焦点。在此,我们将从以下几个方面来阐述网络安全的重要性,并讨论几种保障网络安全的方式。 一、网络安全的重要性…...

网络基础:socket套接字

文章目录 1. 前导知识1.1 源MAC地址和目的MAC地址1.2 源IP地址和目的IP地址1.3 MAC地址和IP地址的配合1.4 源端口号和目的端口号1.5 Socket1.6 UCP协议和TCP协议1.7 网络字节序高低位高低地址大端和小端网络字节序常用转换函数 2. socket 网络编程2.1 socket 常见接口创建套接字…...

程序员如何学好PHP?做好这五个方面就够了

今天我想和大家分享一下程序员的第一份工作对自己的意义以及影响。首先,我们都知道第一份工作很重要,因为它决定了你以后的职业生涯的方向。你的第一份工作做的什么方向,很可能就是你以后职业生涯中最主要的方向。对我个人而言,我…...

【开源项目】Build your own X 构建自己的项目

【开源项目】Build your own X 构建自己的项目 简介 Build your own X 是一个精心收集了大量资源的项目指南,可以通过从头开始重新创建我们最喜爱的技术来掌握编程。 项目地址: https://github.com/codecrafters-io/build-your-own-x这些项目里的资源…...

在.NET Core中正确使用HttpClient的方式

HttpClient 是 .NET Framework、.NET Core 或 .NET 5以上版本中的一个类,用于向 Web API 发送 HTTP 请求并接收响应。它提供了一些简单易用的方法,如 GET、POST、PUT 和 DELETE,可以很容易地构造和发送 HTTP 请求,并处理响应数据。…...

【C++】位运算类题目总结

文章目录 一. 位运算符脑图二. 相关题目1. 统计二进制数中0的个数2. 数组中只出现一次的数字3. 数组中只出现一次的数字 II4. 不用加减乘除做加法 一. 位运算符脑图 二. 相关题目 1. 统计二进制数中0的个数 解题思路:x & (x-1);它的作用是每次循环…...

Node服务端开发【NPM】

文章目录 前言NPM使用NPM使用场景NPM的常用命令NPM命令使用介绍使用NPM安装模块下载三方包全局安装VS本地安装本地安装全局安装全局模块路径查看与路径修改 卸载模块更新模块搜索模块NPM服务器发布包 NPM换源nrm全局安装 nrm:nrm ls 列出来现在已经配置好的所有的原地址nrm use…...

【C#】 HTTP 请求通讯实现指南

在现代软件开发中,HTTP 协议是应用程序与外部服务交互的核心桥梁。C# 作为 .NET 生态的主力语言,提供了丰富而成熟的 HTTP 通讯能力。本文将系统介绍 C# 中实现 HTTP 请求的技术选型、核心概念、常见场景及最佳实践,帮助开发者构建稳定、高效…...

12,Springboot3+vue3实现系统公告功能

做一个新的公告模块步骤如下 一, 后端 1, 创建系统公告表 CREATE TABLE `notice` (`id` int NOT NULL AUTO_INCREMENT COMMENT 主键ID,`title` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 公告标题,`content` varchar(255) COLLATE utf8mb4_unicode_ci …...

第十一节:私有知识大脑——为本地 Agent 构建企业级 RAG 检索增强链路

引言 承接上一章我们对 embedding 和向量检索的实战部署,本章将聚焦打造私有知识大脑,通过构建完整的 RAG(Retrieval-Augmented Generation)检索增强链路,极大拓展本地 Agent 在企业场景的应用边界。 核心理论 RAG 是实现大模型实时访问和利用外部知识的关键技术,其数…...

AI技能自进化系统:异步复盘与残差学习架构实践

1. 项目概述:一个让AI助手学会自我进化的“技能大脑”如果你也玩过各种AI助手,比如Claude、GPTs或者国内的一些大模型应用,你肯定遇到过这样的场景:你教了它一个处理Excel表格的“技能”,比如“把A列数据乘以1.1然后填…...

AI编程工具实战指南:从Claude Code到Cursor的深度技巧与工作流设计

1. 项目概述:一份写给实干派开发者的AI编程工具实战手册 如果你和我一样,是个在一线写代码写了十来年的老程序员,那你肯定已经感受到了,这两年AI编程工具的出现,彻底改变了我们写代码的方式。从最开始GitHub Copilot那…...

雨天高速公路元胞传输模型可变限速控制方法【附程序】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅如需沟通交流,点击《获取方式》 (1)雨天改进元胞传输模型参数标定与验证: 在…...

C语言程序设计核心详解 结构体与链表概要详解

1.结构体类型代码语言:cAI代码解释struct 结构体类型名 {成员1的定义;成员2的定义;.........成员n的定义; }结构体名(可以省略);1.1 构造与定义结构体类型构造结构体一共有三种方法方法一:代码语言:cAI代码解释struct student {int sn;int ag…...

arp-scan终极实用指南:三步完成网络设备快速发现

arp-scan终极实用指南:三步完成网络设备快速发现 【免费下载链接】arp-scan The ARP Scanner 项目地址: https://gitcode.com/gh_mirrors/ar/arp-scan 你是否曾想知道局域网里到底有哪些设备?想要快速发现网络中的"隐形"设备&#xff1…...

从HIP4082到IR2184:直流电机驱动芯片怎么选?聊聊全桥与半桥方案的取舍

从HIP4082到IR2184:直流电机驱动芯片的工程化选型指南 在智能硬件和工业自动化项目中,电机驱动方案的选择往往决定着整个系统的可靠性边界。当工程师面对满目琳琅的驱动芯片时,IR2184和HIP4082这两个经典型号总会出现在候选清单中——前者以半…...

【独家首发】SITS 2026 MLOps平台内核解析:基于eBPF+Wasm的实时模型行为沙箱(实测拦截未授权数据外泄成功率99.997%)

更多请点击: https://intelliparadigm.com 第一章:AI原生模型管理:SITS 2026 MLOps完整解决方案 SITS 2026 是面向AI原生工作负载设计的下一代MLOps平台,深度集成模型生命周期治理、动态推理编排与可信AI审计能力。其核心突破在于…...