MySQL基础(十四):事务

Spring事务和MySQL事务详解面试 文章目录数据库事务事务是什么事务的四大特性MySQL事务隔离级别查看MySQL当前事务隔离级别MySQL默认操作模式为自动提交模式JDBC处理事务Spring事务Spring的事务传播PROPAGATION_REQUIREDPROPAGATION_SUPPORTSPROPAGATION_MANDATORYPROPAGATION_REQUIRES_NEWPROPAGATION_NOT_SUPPORTEDPROPAGATION_NEVERPROPAGATION_NESTEDSpring事务的隔离级别Spring 阅读详情
  • 本博客是《MySQL基础》系列博客的第十四部分,简单介绍MySQL中的事务处理,包括事务的概念、特征以及事务并发所带来的问题及事务隔离级别
  • 本博客既为方便自己查看复习而作,亦为你而作,望能有所裨益
  • 学习交流请联系 April_0911@163.com

基本概念


想必大家双十一的时候都曾疯狂地剁过手,过年的时候都曾激昂地抢过火车票,如果你曾细心留意,你会发现每年这个时候一些科技媒体都会报道这些数据库是如何如何处理这些高并发事务的,也就是说所谓的事务反映出来不过是数据的变动。你提交一份订单,购买一张火车票,它背后的数据库都会提交相应的事务,以保证系统数据的准确性等。


事务是一些列DML语句的集合,即众多插入、更新、删除语句组成的一个程序执行单元

四大特征

  • 原子性(Atomicity):事务是一个最小的工作单元,整个工作单元要么一起提交成功,要么一起失败回滚
  • 隔离性(Isolation):数据并发的时候,一个事务所操作的数据在提交之前,对其他事务的可见性设定(一般设定为不可见)
  • 一致性(Consistency):事务中操作的数据及状态改变是一致的,即写入资料的结果必须完全符合预设的规则,不会因为出现系统意外等原因导致状态的不一致
  • 持久性(Durability):事务所做的修改就会永久保存,不会因为系统意外导致数据的丢失

事务并发

  • 在实际生活中,我们不可能总是在一个事务执行完以后再执行另一个事务,更多的是同时有许多事务一起提交,而这就叫作事务并发
    (试想一下,如果火车票购买只能是这个人买完了下个人才能买的话,你会遇到那种成百上千张车票在三秒内就没了的场景嘛?)
  • 事务并发在提高效率的同时不可避免地会产生一些问题,如:
    • 脏读:一个事务访问到了另一个事务未提交的数据
      假设现在有3张车票,在3个人下订单后我们更新了一下数据,即无车票;此时回家心切的小明查询车票余量,为0张,悲伤不已;但是此时我们发现那三个人的订单有问题,于是回滚了该事务,即仍有三张车票,此时就出现了脏读
    • 不可重复读:一个事务读取同一条记录两次,得到的结果不一致,重点在于数据的修改
      假设现在有三张车票,此时回家心切的小明查询了一下,发现还有三张车票,兴奋极了,怀疑这是不是错觉,于是重新刷新了一下,却惊奇地发现没有了!原来在他刷新的时候有三个人已经提交订单购买车票了,而小明又陷入了深深的思考中。。。
    • 幻读:一个事务读取两次,得到的记录条数不一致,重点在于数据的增加或删除
      (注:幻读和不可重复读大同小异,只不过其侧重点不同而已)

隔离级别

为了应对事务的并发所带来的问题,可以通过设置数据库的事务隔离级别来处理:

  • 读未提交(read uncommitted):事务中的修改,即使没有提交,其他事务也可以看得到,会产生“脏读”、“幻读”和“不可重复读”等问题
  • 读已提交(read committed):大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读”,但避免不了“幻读”和“不可重复读”的问题
  • 可重复读(repeatable read):保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据,避免了“脏读”和“不可重复读”的问题,但不能避免“幻读”,性能损失更大
  • 串行化(serializable):最严格的级别,事务串行执行,资源消耗最大
事务隔离级别脏读不可重复读幻读
读未提交可能可能可能
读已提交不可能可能可能
可重复读不可能不可能对InnoDB不可能
串行化不可能不可能不可能

应用示例

  • 提交事务
begin; -- 开始提交事务
<语句>;
rollback; -- 出现异常则取消事务提交
commit; -- 事务提交完毕
begin; -- 开始提交事务 
insert into rental(rental_date,inventory_id,customer_id,return_date,staff_id)
values('2005-05-24 23:03:39', 367, 130, '2005-06-01 22:12:39', 1); -- 注意主外键约束 
insert into payment(customer_id,staff_id,rental_id,amount,payment_date)
values(130,1,16054,911,'2017-04-01 08:20:00');
rollback; -- 出现异常则取消事务提交  
commit; -- 事务提交完毕 
  • 显示级别
select @@transaction_isolation;

在这里插入图片描述

  • 修改级别
set session transaction isolation level <隔离级别>; 
-- 隔离级别分为 read uncommitted、read committed、repeatable read、serializable
set session transaction isolation level read uncommitted; 
-- 更改当前会话的事务隔离级别为读未提交

在这里插入图片描述

MySQL基础:从SQL语法到事务特性全面解析 MySQL作为最流行的开源关系型数据库管理系统,在Web应用开发中占据着举足轻重的地位。无论你是刚入门的新手,还是有一定经验的开发者,掌握MySQL的基础知识都是必不可少的。 阅读详情

相关推荐

手把手教你用CsvView分析大疆无人机飞行日志(附实战CTF题解)

本文详细介绍了如何使用CsvView工具分析大疆无人机飞行日志,包括环境搭建、日志提取、核心功能解析及CTF实战技巧。通过实战案例,帮助读者掌握无人机取证的关键技术,提升日志分析能力,特别适合网络安全竞赛和实际取证场景。

weixin_42652674的博客 458

MySQL 高级 - 第十四章 | 事务基础知识

事务是数据库区别于文件系统的重要特性之一,当有了事务就会让数据库始终保持一致性,同时还能通过事务的机制恢复到某个时间点,这样可以保证已提交到数据库的修改不会因为系统崩溃而丢失。

xhmico的博客 870

从零开始理解异构算力调度:全国一体化算力算网平台实战解析

本文深入解析了异构算力调度技术在全国一体化算力算网平台中的实战应用。通过资源抽象层设计、动态感知引擎和跨云调度算法,实现AI训练任务的高效资源分配,显著提升计算效率并降低成本。特别针对GPU等异构算力的智能调度方案,为多云协同环境下的AI开发提供实用指南。

weixin_28730927的博客 334

【MySQL】第十四节—事务:从基础概念到隔离性理论与实践 | 详解

本文详细介绍了MySQL事务的概念与特性。事务是由一组DML语句组成的逻辑单元,具有ACID特性:原子性(全部成功或失败)、一致性(数据完整性)、隔离性(并发控制)和持久性(永久修改)。重点分析了事务的隔离级别:读未提交(可能脏读)、读提交(可能不可重复读)、可重复读(MySQL默认)和串行化(最高隔离)。通过多个实验演示了事务的基本操作、保存点使用、自动提交设置,以及不同隔离级别下的数据可见性问题。文章还对比了InnoDB(支持事务)和MyISAM(不支持事务)的差异,为理解MySQL事务机制提供了全面指

稻草人 1116

【逆强化学习-1】学徒学习(Apprenticeship Learning)

逆强化学习算法1:学徒学习。算法原理+算法步骤+代码+仿真:一个基于gym的小车上山的仿真。附赠学徒学习+Q-Table及学徒学习+DQN的全套代码。

体会编程语言独到的美 7495

STM32 HAL库定时器中断实现步进电机S型加减速控制与脉冲精准计数

本文详细介绍了如何使用STM32 HAL库定时器中断实现步进电机的S型加减速控制与脉冲精准计数。通过CubeMX配置定时器、计算PSC和ARR值,并结合S型曲线算法,实现平滑启停和精准定位。文章还提供了脉冲计数方案和常见问题排查技巧,帮助开发者优化步进电机控制性能。

weixin_29189363的博客 373

MySQL基础教程(二十四)MySQL之事务:数据一致性的守护者,深入剖析MySQL事务核心机制

MySQL事务是确保数据一致性的核心机制,具备ACID特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。本文通过转账示例深入分析事务的工作原理,探讨隔离级别对并发操作的影响,揭示MySQL在高并发环境下保持数据完整性的关键技术手段。

jxf_jxfcsdn的博客 223

2026 拉勾网:JA4+指纹绕过 + sign逆向 + 动态城市参数,月采集10万+数据实战

2026年拉勾网反爬技术全面升级,采用JA4+ TLS指纹识别、动态sign签名等多维度防护体系。本文提供工业级爬虫解决方案,通过curl_cffi模拟浏览器指纹、逆向sign加密算法、动态生成城市参数三大核心技术,实现高效稳定的数据采集。系统采用分层架构设计,包含任务调度、签名生成、多线程引擎等模块,单月可获取10万+条招聘数据。重点解析了JA4+指纹识别原理、传统方法的局限性,以及通过HMAC-SHA256算法逆向sign参数的完整过程。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2395

【MySQL基础】MySQL事务详解:原理、特性与实战应用

【MySQL基础】事务处理相关知识点全面讲解!!

2301_80220607的博客 1万+

4.Simulink基础建模操作——加减乘除运算

加减乘除运算

FPGA/MATLAB学习教程/源码/项目合作开发 9550

GDB交叉编译与问题解决:从零到精通的深度指南

完成后,GDB会安装到/usr/local/gdb-aarch64/bin,可以用aarch64-linux-gnu-gdb --version检查。:得有支持目标架构的交叉编译工具链,比如gcc-arm-none-eabi(用于ARM裸机)或aarch64-linux-gnu-gcc(用于ARM Linux)。:在配置工具链时,运行aarch64-linux-gnu-gcc --version检查版本,确保工具链没问题。这种场景下用GDB调试,就像在荒野求生,但别慌,GDB依然是你的好伙伴。

大模型大数据攻城狮的专栏 1万+

MySQL基础:事务

目录 事务 事务的应用场景说明 手动提交事务 手动提交事务使用过程 自动提交事务 事务原理 回滚点 事务的隔离级别 MySQL 数据库有四种隔离级别 MySQL 事务隔离级别相关的命令 脏读的演示 不可重复读的演示 幻读的演示 事务 事务的应用场景说明 什么是事务 在实际的开发过程中,一个业务操作如:转账,往往是要多次访问数据库才能完成的。转账是一个用户扣钱,另一个用户加钱。 如果其中有一条 SQL 语句出现异常,这条 SQL 就可能执行失败。 事务执行是一个整.

baidu_41388533的博客 2447

DeepSeek掘金——用DeepSeek模型构建AI 代理

在本综合指南中,我们将探讨如何利用 DeepSeek 的功能构建能够以有意义的方式理解、推理和交互的复杂 AI 代理。人工智能领域正在迅速发展,DeepSeek 的模型代表了智能 AI 代理开发的重大进步。在本综合指南中,我们将探讨如何利用 DeepSeek 的功能构建能够以有意义的方式理解、推理和交互的复杂 AI 代理。

3861

【MySQL基础教程】事务详细介绍

本文为 【MySQL基础教程】事务相关知识,下边将对事务简介,事务操作(包括:未控制事务,控制事务),事务四大特性,并发事务问题,事务隔离级别等进行详尽介绍~

小新要变强的博客 2931

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

MySQL事务基础

事务是数据库区别于文件系统的重要特性之一,当有了事务就会让数据库始终保持一致性,同时还能通过事务的机制恢复到某个时间点,这样可以保证已提交到数据库的修改不会因为系统崩溃而丢失ACID是事务的四大特性,在这四个特性中,原子性是基础,隔离性是手段,一致性是约束条件,而持久性是目的。数据库事务,其实就是数据库设计者为了方便起见,把需要保证原子性、隔离性、一致性和持久性的一个或多个数据库操作称为一个事务。

YouPromise的博客 992

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

MySql基础:事务

1. 只要输入begin或者start transaction,事务便必须要通过commit提交,才会持久化,与是 否设置set autocommit无关。2. 事务可以手动回滚,同时,当操作异常,MySQL会自动回滚。3. 对于 InnoDB 每一条 SQL 语言都默认封装成事务,自动提交。(select有特殊情况,因为 MySQL 有 MVCC )4. 如果没有设置保存点,也可以回滚,只能回滚到事务的开始。

sjm18796129182的博客 1535

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

MySQL中事务基础入门详解

在数据库中,所谓事务是指一组逻辑操作单元,使数据从一种状态变换到另一种状态。 为确保数据库中数据的一致性,数据的操纵应当是离散的成组的逻辑单元。当它全部完成时,数据的一致性可以保持,而当这个单元中的一部分操作失败,整个事务应全部视为错误,所有从起始点以后的操作应全部回退到开始状态。 事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元中某条SQL语句一旦执行失败或产生错误,整个单元将会回滚。所有受到影响的数据将返回到事

小小默:进无止境 2736

mysql基础【事务】

特性英文缩写核心含义关键点原子性A要么全做,要么全不做事务不可分割一致性C数据始终合法满足完整性约束隔离性I并发无干扰控制可见性持久性D提交即永久写入日志 + 刷盘一个事务读取到了另一个事务尚未提交的数据。在一个事务内,多次读取同一行记录,但每次读取的结果不一致。一个事务按照某个条件查询数据时,没有找到对应的数据行;但在插入或再次查询时,却发现该数据已经存在,好像出现了“幻影”。

2401_82676816的博客 1042

MySQL— 基础语法大全及操作演示!!!(事务)

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。就比如: 张三给李四转账1000块钱,张三银行账户的钱减少1000,而李四银行账户的钱要增加1000。这一组操作就必须在一个事务的范围内,要么都成功,要么都失败。正常情况: 转账这个操作, 需要分为以下这么三步来完成 , 三步完成之后, 张三减少1000, 而李四增加1000, 转账成功。

weixin_43412762的博客 3240

MySQL事务基础知识

目录 1.数据库事务概述 1.1 存储引擎支持情况 1.2 事务基本概念 1.3 事务的ACID特性 1.4 事务的状态 2.如何使用事务 3.事务的隔离级别 4.事务的常见分类 1.数据库事务概述 1.1 存储引擎支持情况 可以使用 SHOW ENGINES 命令查看MySQL支持事务的存储引擎有哪些 1.2 事务基本概念 事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态 事务处理的原则:保证所有事物都作为一个工作单元来执行,即使出现了故障,...

持之以恒,方得始终 2884

【MySQL】 事务:事务基础知识、MySQL事务实现原理、事务日志 redolog & undolog 详解

本文对事务基础知识、隔离级别,以及事务的实现原理,事务日志 redo log、undo log的结构、原理以及什么时候产生,什么时候删除做了详细讲解。

正在努力工作的搬砖人 3212

MySQL笔记:第13章_事务基础知识

第13章_事务基础知识1.数据库事务概述1.1 存储引擎支持情况1.2 基本概念1.3事务的ACID特性原子性(atomicity)一致性(consistency)隔离型(isolation)持久性(durability)1.4 事务的状态活动的(active)部分提交的(partially committed)失败的(failed)中止的(aborted)提交的(committed)2. 如何使用事务2.1 显式事务2.2 隐式事务2.3 隐式提交数据的情况数据定义语言(Data definition l

IAMLSL的博客 2580

深入解析 MySQL 事务:从基础概念到高级应用

事务是由一个或多个 SQL 语句组成的独立工作单元,在这个单元中,每个 SQL 语句都是相互依赖的。事务作为一个不可分割的整体存在,要么全部成功,要么全部失败,不可能存在部分成功、部分失败的情况。简而言之,事务就是一个整体,内部的 SQL 语句要么全部执行成功,要么全部执行失败。一旦某条 SQL 语句执行失败或出错,整个事务将回滚(返回最初状态),所有受到影响的数据将恢复到事务开始前的状态;若所有 SQL 语句执行成功,则事务顺利提交。

微笑听雨 5542

MySQL事务基础原理详解

本文全面解析了 MySQL 事务的原理与应用,从事务起源、ACID特性,到语法操作、并发问题,再到隔离级别与日志机制(Undo Log、Redo Log、Binlog),深入讲解了事务在保证数据一致性、隔离性和持久性中的核心作用,并结合实际场景与示例,帮助开发者全面掌握 MySQL 事务管理与优化技巧。

持续输出Java相关知识 669

Mysql基础-事务

本文详细介绍了MySQL事务的概念、四大特性(ACID)、并发事务问题(脏读、不可重复读、幻读)及事务隔离级别的设置与影响。通过案例演示,帮助读者理解如何通过事务隔离级别解决并发问题,确保数据的一致性与安全性。

m0_73941339的博客 1342
上一篇: MySQL基础(十三):存储过程
下一篇: MySQL基础(十五):用户权限
April_0911
博客等级 码龄10年 1404粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值