MySQL事务相关笔记

news2024/11/26 1:36:41

杂项

InnoDB最大特点:支持事务行锁

MyISAM不支持事务

介绍

一个事务是由一条或者多条对数据库操作的SQL语句所组成的一个不可分割的单元,只有当事务中的所有操作都正常执行完了,整个事务才会被提交给数据库。事务有如下特性:

1.事务的所有SQL语句全部执行成功,才能提交(commit)事务,把结果写回磁盘上。

2.事务执行过程中,有的SQL出现错误,那么事务必须要回滚(rollback)到最初的状态。

ACID特性

  • 事务的原子性(Atomic)
  • 事务的一致性(Consistency)
  • 事务的隔离性(Isolation)

当两个或者多个事务并发执行时,为了保证数据的安全性,将一个事物内部的操作与其它事务的操作隔离起来,不被其它正在执行的事务所看到,使得并发执行的各个事务之间不能互相影响。

  • 事务的持久性(Durability)

事务完成(commit)以后,DBMS保证它对数据库中的数据的修改是永久性的,即使数据库因为故障出错,也应该能够恢复数据!

ACD特性是由mysql的undo log和 redo log 保证;

I特性是由mysql事务 锁机制保证;

mysql中最重要的是日志而不是数据。

事务相关指令

BEGIN; 开启一个事务

COMMIT; 提交一个事务

ROLLBACK; 回滚一个事务到初始的位置

SAVEPOINT point1; 设置一个名字为point1的保存点

ROLLBACK TO point1; 事务回滚到保存点point1,而不是回滚到初始状态

SET TX_ISOLATION='REPEATABLE-READ'; 设置事务的隔离级别

SELECT @@ TX_ISOLATION; 查询事务的隔离级别

实践例子

查看是否设置了自动提交:

在这里插入图片描述

事务并发存在的问题

  • 脏读(Dirty Read):一个事务读取了另一个事务未提交的数据。例如当事务A和事务B并发执行时,当事务A更新后,事务B查询读取到A尚未提交的数据,此时事务A回滚,则事务B读到的数据就是无效的脏数据。(事务B读取了事务A尚未提交的数据)
  • 不可重复读(NonRepeatable Read):一个事务的操作导致另一个事务前后两次读取到不同的数据。例如当事务A和事务B并发执行时,当事务B查询读取数据后,事务A更新操作更改事务B查询到的数据,此时事务B再次去读该数据,发现前后两次读的数据不一样。(事务B读取了事务A已提交的数据)
  • 虚读(Phantom Read)幻读:一个事务的操作导致另一个事务前后两次查询的结果数据量不同。(事务B读取了事务A新增加的数据或者读不到事务A删除的数据)

事务的隔离级别

MySQL支持的四种隔离级别是:

1、READ-UNCOMMITTED未提交读。说明在提交前一个事务可以看到另一个事务的变化。这样读脏数据,不可重复读和虚读都是被允许的。

2、READ-COMMITTED已提交读。说明读取未提交的数据是不允许的。这个级别仍然允许不可重复读和虚读产生。

3、REPEATABLE-READ可重复读。说明事务保证能够再次读取相同的数据而不会失败,但虚读仍然会出现。

4、SERIALIZABLE。串行化。是最高的事务级别,它防止读脏数据,不可重复读和虚读。(它相当于加了读写锁,某个会话读时,其他线程不能写)

在这里插入图片描述

注解

事务隔离级别越高,为避免冲突所花费的性能也就越多,降低并发度。

在“可重复读”级别,实际上可以解决部分的虚读问题,但是不能防止 update 更新产生的虚读问题,要禁止幻读产生,还是需要设置串行化隔离级别。

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

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

相关文章

【使用指导】wifi蓝牙二合一模块LCS2028与服务器的数据收发功能测试指导

在物联网智能家居、智能照明、智能楼宇、智慧工厂、智能制造等领域的数据透传、智能控制应用中,支持UART串口通信的低功耗WiFi蓝牙二合一模块应用极为广泛。模块性能测试环节中会测试模块与服务器的数据收发功能,确保功能性能够满足项目应用需求。本篇就…

深入理解 SpringBoot 日志框架:从入门到高级应用——(四)Logback 输出日志到 QQ邮箱

文章目录 获取 QQ 邮箱授权码添加依赖编写 SMTPAppender运行结果 要将 Logback 输出日志到 QQ 邮箱,需要执行以下步骤: 在 QQ 邮箱中获取授权码。在你的 SpringBoot 项目中添加 Logback 依赖和 SMTP 协议实现库,例如 Email 依赖。在 Logback…

NOTA-Me-Tetrazine,NOTA-甲基四嗪,大环化合物具有良好的配位和鳌合能力

文章关键词:甲基四嗪修饰大环配体,双功能螯合剂,大环化合物 ●中文名:NOTA-甲基四嗪 ●英文名:NOTA-Me-Tetrazine ●外观以及性质: 西安凯新生物科技有限公司供应的​NOTA-Me-Tetrazine中四嗪修饰大环配体&…

LaTeX插入参考文献

接着上一篇,用EndNote组织参考文献,然后再导入到LeTex中感觉不太好用,然后就学习了一下BibTeX来管理参考文献,发现还可以,这里记录一下,方便以后查阅。 LaTeX插入参考文献 thebibliographyBibTeX参考资料 t…

总结901

目标规划: 月目标:6月(线性代数强化9讲,考研核心词过三遍) 周目标:线性代数强化5讲,英语背3篇文章并回诵,检测 每日规划 今日已做 1.回环复习之前背过的文章。 2.背单词&#xf…

想了解3,4,6-Tri-O-acetyl-D-galactal,4098-06-0,D-三乙酰半乳糖烯?点击这里查看详细信息!

文章关键词:糖化学试剂,三乙酰半乳糖烯 3,4,6-Tri-O-acetyl-D-galactal |3,4,6-O-三乙酰基-D-半乳糖烯,D-三乙酰半乳糖烯|CAS:4098-06-0 | 纯度:95%一、结构式: 二、试剂参数信息: CAS&#x…

Redis从入门到精通进阶篇之持久化RDB和AOF机制详解

文章目录 RDB持久化AOF持久化RDB与AOF的混合持久化 Redis 6的持久化机制主要有两种:RDB(Redis DataBase)和AOF(Append Only File)。本文将详细介绍这两种持久化方式的工作原理和配置要点。 RDB持久化 RDB持久化是将当…

中国电子学会2023年05月份青少年软件编程Scratch图形化等级考试试卷一级真题(含答案)

2023年5月 Scratch一级真题 题数:37 分数:100 测试时长:60min 一、单选题(共25题,共50分) 1. 看图找规律,请问下图红框中是?(D)(2分) A. B. C. …

C++线程库(1)

C线程库(1) 线程进程基础概念多线程线程调用函数的底层值作为参数引用作为参数右值引用作为参数 join和destach区别joinable函数 jthread(C20)同步异步(简述)互斥(简述)阻塞非阻塞递…

SpringAOP+自定义注解简单使用

一、SpringAOP简述 SpringAOP可以帮助我们在不修改源代码的前提下实现功能增强,其底层实现原理基于Java动态代理或者CGLIB。 之前我们使用 execution表达式指定被AOP增强的方法:(execution关键字用于描述哪些方法需要切面逻辑) 但是这样使用非常不灵活&a…

网络层:路由选择协议

1.网络层:路由选择协议 笔记来源: 湖科大教书匠:路由选择协议概述 湖科大教书匠:路由信息协议RIP的基本工作原理 湖科大教书匠:开放最短路径优先OSPF的基本工作原理 湖科大教书匠:边界网关协议&#xff08…

力扣题库刷题笔记7--N

1、题目如下: 2、个人Python代码实现: 看到此题的第一反应就是,生成一个类似二维数组的多个字符串,然后用个标志位控制N字符中字符的方向,例如flag True,在每次循环时候以flag flag * -1来控制。 由于示例…

嵌套虚拟机-Win10下的-wmware中的Ubuntu1804-使用KVM-安装win和ubuntu虚拟机

一、物理机操作 参考博文-CSDN-林麦安 -关于“ VMware Workstation 16 此平台不支持虚拟化的Intel VT-x/EPT. 不使用虚拟化的Intel VT-x/EPT,是否继续?”的有关问题的总结解答 在windows物理机搜索:内核隔离 把开关置为关 但是我的物理机这个选项已经是…

学习系统编程No.24【深入学习信号】

引言: 北京时间:2023/6/13/19:07,伴随着期末考的来临,最近停课啦!无论是线上课,还是学校的课,开心,那这不是咱持续更文的好时候嘛,但是今天在学习相关C知识时&#xff0…

华为防火墙之安全策略

1.安全策略初体验 安全策略在防火墙转发报文的过程中扮演着重要角色,只有安全策略允许通过,报文才能在安全区域之间流动,否则报文将被丢弃。 先来看一个简单的网络环境,如下图: 如果想在防火墙上允许PC访问Web服务器…

NOTA-(COOt-Bu)3-Bn-NCS:一款多功能四氮杂环螯合剂标记

文章关键词:双功能螯合剂,大环化合物,有机双功能DOTA,金属离子螯合剂,四氮杂环螯合剂标记 【产品描述】 NOTA及其衍生物是新型双功能整合剂之一。NOTA及其衍生物具有良好的配位和鳌合能力,可作为过渡金属离…

vmstat调优命令

目录 一、vmstat命令描述 二、vmstat的语法格式 三、压力测试工具stress 实验: 模拟I/O负载 查看是哪个进程I/O读写高:pidstat -d (-d参数查看各进程io情况) 总结 一、vmstat命令描述 vmstat命令: 用来获得有关进程、虚存、页面交换…

ChatGPT写文章

ChatGPT写小文章 只是个人对写小XX的心得?从知乎,知网自己总结的,有问题,可以留个言我改一下 被CSDN制裁过 关键词:论文 文章目录 ChatGPT写小文章-1.写XX模仿实战(狗头)0.XX组成1.好XX前提:2.标题3.摘要4.关键词5.概述6.实验数据、公式或者设计7.结论,思考8.参…

vsce报错The Personal Access Token verification has failed.,vsce login登录时同报此错的解决办法

本篇文章主要讲解vscode插件开发提交插件版本时出现的token报错问题的解决办法。 日期:2023年6月15日 作者:任聪聪 报错现象 1.vsce login 用户id报错如下: 具体报错内容: The Personal Access Token verification has failed. Additional information: Error: {"…

7.vue3医疗在线问诊项目 - _极速问诊-支付功能实现 ==> 预支付信息渲染、支付流程解析、订单生成、支付完成

7.vue3医疗在线问诊项目 - _极速问诊-支付功能实现 > 预支付信息渲染、支付流程解析、订单生成、支付完成 问诊支付-路由和预支付信息渲染{#pay-html} 实现:问诊页面路由配置,获取问诊预支付信息并渲染。 需求: 配置预订单信息页面路由定…