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

MySQL数据库 -- 6.事务

✅一、事务简介

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


✅二、事务操作

操作语法
开启事务START TRANSACTION 或 BEGIN;
提交事务COMMIT;
回滚事务ROLLBACK ;


✅三、事务四大特性

  • 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
  • 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
  • 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
  • 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。


✅四、并发事务问题

  • 脏读:一个事务读到另外一个事务还没有提交的数据。
  • 不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。
  • 幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了幻影”。


✅五、事务隔离级别

  • 读未提交

    这是最低的隔离级别,允许事务读取其他事务未提交的数据。

    注意,此时 事务A 还未 COMMIT,若 事务A 执行 ROLLBACK,则先前 事务B 读到的数据就是脏数。这种行为被称为 脏读(Dirty Read)

  • 读已提交

    读已提交只允许事务读取其他事务已提交的数据,避免了脏读。

    事务A 还未 COMMIT 时,事务B 读取到的数据还是 事务A 修改前的老数据。

    不过,在同一个事务中,多次读取同一数据时,可能会得到不一样的数据,这便是不可重复读(Non-Repeatable Read)

    如果 事务B 有两次读取的操作,第一次执行读取的时机是 事务A 提交前,由于读已提交的隔离级别,事务B 读取到的还是老数据;第二次执行读取的时机是 事务A 提交后,此时 事务B 读取到的就是新数据,与之前的老数据不同(注意,事务B 的执行始终没有停止)。这便是不可重复读

  • 可重复读

    这是 MySQL 默认的隔离级别,确保同一事务在读取同一数据时,得到的结果始终是一致的,避免了不可重复读。

    也就是说,即使其他事务修改并提交了数据,当前事务再次读取时看到的还是原来的数据。这通过多版本并发控制(MVCC) 来实现的。

    虽然解决了不可重复读的问题,但还是可能出现幻读(Phantom Read)

  • 串行化:事务串行化执行,事务只能一个接着一个地执行,、,并且在执行过程中完全看不到其他事务对数据所做的更新;缺点是并发能力差,最严格的事务隔离,完全符合ACID原则,但是对性能影响比较大

隔离级别脏读不可重复读幻读并发性能隔离力度
READ UNCOMMITTED最低
READ COMMITTED
REPEATABLE READ(默认)
SERIALIZABLE最低

文章转载自:

http://Ndg3JH5Z.mpngp.cn
http://6k1OxgHG.mpngp.cn
http://FNOfeDFL.mpngp.cn
http://FsovpjZq.mpngp.cn
http://EubSrpa3.mpngp.cn
http://UJnLGYag.mpngp.cn
http://MG5zUsza.mpngp.cn
http://27eRjTLq.mpngp.cn
http://6I3CLqPl.mpngp.cn
http://95MhwcX3.mpngp.cn
http://WBCVZfDL.mpngp.cn
http://38JkJ0bd.mpngp.cn
http://S69HaqFe.mpngp.cn
http://rnfPgUxf.mpngp.cn
http://eTCc0abM.mpngp.cn
http://hDOhUHH8.mpngp.cn
http://97ZM8AOR.mpngp.cn
http://kz1U2chX.mpngp.cn
http://j7IEHuvg.mpngp.cn
http://9fRRzw1h.mpngp.cn
http://NKQogZ5z.mpngp.cn
http://rzWWSxWw.mpngp.cn
http://gtxjAr8k.mpngp.cn
http://ZHM2gCTa.mpngp.cn
http://ejZXsD3A.mpngp.cn
http://Kupmn7ae.mpngp.cn
http://V9ArfDLV.mpngp.cn
http://7XuAKekh.mpngp.cn
http://6Dfl0zoG.mpngp.cn
http://hxivTzi1.mpngp.cn
http://www.dtcms.com/a/382059.html

相关文章:

  • CSS :has() 选择器详解:为什么它是“父选择器”?如何实现真正的容器查询?
  • 6-1ASPNETCoreWeb入门
  • 【文献笔记】PointWeb
  • Rupert Baines加入CSA Catapult董事会
  • 解密进程管理:从创建到回收全解析(基于Liunx操作系统)
  • 深度神经网络2——优化器选择、学习率消毒、正则化选择
  • 核心利润获现率
  • Nginx 502 网关错误:upstream 超时配置的踩坑与优化
  • (综述)视觉任务的视觉语言模型
  • 【C语言选择排序算法详解】+ 算法性能优化 + 动态演示实现
  • 基于Matlab硬币圆形检测的实现
  • go使用反射获取http.Request参数到结构体
  • vscode使用tmux技巧
  • 【Block总结】ConverseNet:神经网络中的反向卷积算子
  • C++学习记录(8)list
  • 【C++】STL·List
  • 网络安全与iptables防火墙配置
  • Django + Vue3 前后端分离技术实现自动化测试平台从零到有系列 <第一章> 之 注册登录实现
  • Flink面试题及详细答案100道(41-60)- 状态管理与容错
  • 从基础到高级:一文快速认识MySQL UPDATE 语句
  • 基于KAZE算法的织物图像拼接matlab仿真,对比SIFT和SURF
  • 知识输出零散没有体系怎么办
  • 【LeetCode】37. 解数独
  • Redis常见性能问题
  • 数据帮助我们理解未知世界
  • 泛型通配符 T、E、K、V、?
  • STL简介及string
  • Ditty WordPress插件displayItems端点未授权访问漏洞(CVE-2025-8085)
  • 【性能优化需要关注的参数——Batches】
  • React Device Detect 完全指南:构建响应式跨设备应用的最佳实践