MySQL进阶|MySQL中的事务(一)

news2024/12/23 11:27:28

文章目录

  • 数据库事务
  • MySQL中的存储引擎
  • InnoDB存储引擎架构
  • 什么是事务
  • 事务的状态
  • 总结

数据库事务

MySQL 事务主要用于处理操作量大,复杂度高的数据。比方我想要删除一个用户(销户)以及这个用户的个人信息、订单信息以及其他信息,这里会涉及到很多SQL语句的执行来满足我们的业务需求,我们要一次性删除这些数据,这些数据库操作语句就构成了一个事务。

那么在MySQL数据库中,我们如何查看存储引擎是否支持事务呢?下面我就从我实验机器上的MySQL来一探究竟。

「实验环境」

MySQL 社区版, 8.0.1
在这里插入图片描述

MySQL中的存储引擎

在MySQL中,我们很容易查看存储引擎是否支持事务操作,也可以看到其他的存储引擎是否支持事务。

在登录MySQL数据库的情况下,执行语句

select * from information_schema.engines;

在这里插入图片描述

当然,你也可以从配置库中来查看存储引擎的支持情况,执行语句如下

show engines;

在这里插入图片描述

当然,如果你不想使用命令行来查看这个存储引擎,我们可以使用一些工具来查看,例如NavicatDBeaverworkbench等SQL-UI工具。下面是我使用Navicat查看数据库表的存储引擎情况(这种情况比较多、而且常用)。
在这里插入图片描述

当然了,如果你不喜欢使用那双娇贵的小手敲打命令,我们可以从官方文档上面查寻到这个信息,官方文档提供给我们更加详细的内容:MySQL存储引擎 ,如果你的英文足够好或者网络足够的不错的话,我更倾向于你去查阅下英文的文档。

从上面的的查询信息我们可以得到下面的信息:

  • MySQL 8.0+的默认存储引擎是InnoDB
  • MySQL的InnoDB存储引擎支持事务
  • MySQLInnoDB存储引擎锁为行级别(最小可支持行级锁)
  • MySQLInnoDB存储引擎支持外键

从MySQL的这个配置表,不难看出来,MySQL还支持的其他的存储引擎,但是可以支持事务的却只有InnoDB存储引擎。

InnoDB存储引擎架构

下面这张图是我从官方拷贝过来的,从图中不难看出来,InnoDB主要由两部分来开展工作:内存架构和磁盘架构。其中内存架构中又分为缓冲池、变化缓冲区、日志缓冲区和自适应哈希索引;磁盘架构中分为表空间系统表空间文件前置表空间自动表空间undo表空间临时表空间临时表空间)、索引文件双写缓冲区redo日志区
在这里插入图片描述

什么是事务

在百度百科中是这样子定义事务:

事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。

「事务A的CID特性」

在前面,我们已经说明什么是事务,事务所使用的场景在哪里。一般来说,事务是必须满足4个条件:原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability),总称ACID

「事务的处理原则」

保证所有事务在作为整体的情况,或者说一个执行单元的情况下,即使在执行过程中出现故障,都不可以改变这种执行方式。当在一个执行单元下,要么所有的事务都被commit,要么这些修改的就永久的保存下来,要么DBMS放弃所有的修改,退回到原始状态。

事务的状态

在MySQL数据库中, 事务有5种状态,他们分别是活动状态部分提交状态失败状态提交状态中止状态

1)活动状态:事务在执行时的状态叫活动状态。

2)部分提交状态:事务中最后一条语句被执行后的状态叫部分提交状态。

3)失败状态:事务不能正常执行的状态叫失败状态。

4)提交状态:事务在部分提交后,将往硬盘上写入数据,当最后一条信息写入后的状态叫提交状态。进入提交状态的事务就成功完成了。

5)中止状态:事务回滚并且数据库已经恢复到事务开始执行前的状态叫中止状态。

总结

笔记属于个人的喜好,但是形成了自我的风格就是博文了。希望在记录自己博文道路越走越远。


欢迎关注博主 「六月暴雪飞梨花」 或加入【六月暴雪飞梨花社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术

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

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

相关文章

对JVM内存模型的理解

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

MySQL主从复制详解

目录 1. 主从复制的工作原理 1.1. 主从复制的角色 1.2. 主从复制的流程 2. 配置MySQL主从复制 2.1. 确保主服务器开启二进制日志 2.2. 设置从服务器 2.3. 连接主从服务器 2.4. 启动复制 3. 主从复制的优化与注意事项 3.1. 优化复制性能 3.2. 注意复制延迟 3.3. 处理…

干涉光学测试导论

1.用于光学测试的基本干涉仪 2。相移干涉术 3。专业光学测试 4。长波长干涉术 5。非球面试验 6。表面微观结构的测量 7。绝对测量 8。结束语 第1部分-光学测试用基本干涉仪 (1)双光束干涉 (2)菲佐干涉仪和特维曼-格林干涉仪 (3)测试平面和球面的基本技术 (4)球面的基本…

2020年度NPcon-容器与微服务实践峰会 回顾

一,会议基本信息 时间:12月16日14:00-17:00 地点:上海机遇星球(上海市黄浦区南京西路389号明天广场裙楼2楼) 电梯旁边的指示牌 会场现场 出来的时候,天快黑了 二,内容回顾 由四个讲座和一个…

(5)shell命令以及Linux的权限

写在前面 本章我们将重点讲解 Linux 权限,这是 Linux 基础部分中非常重要的一部分。内容比较干,我会稍稍正经些去讲解。话不多说,我们直接切入正题。 shell 命令及运行原理 严格意义上说的是一个操作系统,我们称之为 —— &…

【AI基础设施】智算场景的资源管理系统与未来展望

高性能计算与智算场景 首先澄清两个概念,高性能计算与智算场景,高性能计算主要是面向天气预测、生物计算、材料计算等场景,而最近几年很火的智算主要是面向AI场景的计算,如语音识别、图像识别、自动驾驶等场景,我们可…

Git 如何撤回已 Push 的代码

在日常的开发过程中,我们广泛利用Git进行版本控制。然而,有时我们可能会误将错误的代码推送到远程仓库,或者希望在本地返回到先前的某个版本以重新进行开发。 就像我个人的经历一样,我曾推送了一些我认为未来会非常有用的优化方案…

14:00面试,14:05就出来了,问的问题有点变态。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到12月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40…

SQL进阶理论篇(十一):什么是MVCC?

文章目录 简介什么是MVCC快照读与当前读悲观锁的问题示例参考文献 简介 在MySQL中,默认的隔离级别是可重复读,可以解决脏读和不可重复读的问题,但不能解决幻读问题。如果想要解决幻读问题,就需要采用串行化的方式,通过…

数据结构——【万字文章+配图+代码】带你深入理解二叉树

1. 二叉树的概念 二叉树是一种有限集合,由根和左右子树构成,每个结点最多有两棵子树,且这两棵子树具有顺序关系 2. 二叉树的特殊情况: 2.1 满二叉树: 一个二叉树,如果每次的结点都达到最大值&#xff…

07-Eventing及实践

1 Knative Eventing的相关组件 Knative Eventing具有四个最基本的组件:Sources、Brokers、Triggers 和 Sinks 事件会从Source发送至SinkSink是能够接收传入的事件可寻址(Addressable)或可调用(Callable)资源 Knative S…

二维码智慧门牌管理系统升级解决方案:房屋管理

文章目录 前言一、一站式服务二、全方位管理三、未来展望四、智慧解决方案 前言 科技带来智慧生活 随着科技的不断发展,智能化已经成为我们生活的重要组成部分。二维码智慧门牌管理系统是这一趋势中的关键工具之一。除了提供标准地址服务外,该系统还为房…

全栈开发中的安全注意事项:最佳实践和工具

安全性是当今数字环境中最重要的问题,而在全栈开发中这一点尤为重要。当企业努力创建强大且动态的应用程序时,他们必须应对复杂的安全威胁领域。在本文中,我们将探讨开发人员可以用来确保安全的全栈开发环境的最佳实践和工具。 1.1 全栈开发的…

电脑软件:推荐一款非常实用的屏幕截图软件

目录 一、功能介绍 二、软件特色 三、常用快捷键 四、软件总结 五、软件下载 FastStone Capture是一款功能强大的屏幕截图软件,它可以帮助用户轻松地捕获屏幕上的任何区域,并将其保存为各种格式的图像文件。以下是关于FastStone Capture软件的一些详…

小信砍柴的题解

目录 原题描述: 时间:1s 空间:256M 题目描述: 输入格式: 输出格式: 样例1输入: 题目大意: 主要思路: 注意事项: 总代码: 原题描述&#…

59. 螺旋矩阵 II(java实现,史上最详细教程,想学会的进!!!)

今天来分享一下螺旋矩阵的解题思路及代码的实现。 题目描述如下: 首先拿到这道题,首先不要慌张,我们来仔细分析一下会发现并没有那么难。 首先看下边界的元素是1、2、3递增的,那么我们也许可以根据这一点先把边界的元素一个一个给…

上下界取min/max的线段树问题:P8518 [IOI2021] 分糖果

https://www.luogu.com.cn/problem/P8518 没有要求在线,显然离线(。维护时间戳,上线段树。 好了,我们现在知道一个人的曲线变化了。怎么做呢? 前面所有碰上下界的都是没用的!我们只需要找最后一段的时间…

TrustZone之顶层软件架构

在处理器中的TrustZone和系统架构中,我们探讨了硬件中的TrustZone支持,包括Arm处理器和更广泛的内存系统。本主题关注TrustZone系统中发现的软件架构。 一、顶层软件架构 下图显示了启用TrustZone的系统的典型软件栈: 【注意】:为简单起见,该图不包括管理程序,尽管它们可…

【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)

系列文章目录 身躯已然冰封,灵魂仍旧火热 本文由睡觉待开机原创,未经允许不得转载。 本内容在csdn网站首发 欢迎各位点赞—评论—收藏 如果存在不足之处请评论留言,共同进步! 文章目录 系列文章目录前言题目链接(有需要…

计算机组成原理——数制与编码

1.在以下编码中,零的表示唯一的是(C) A.反码 B.原码 C.补码 D.原码和移码 2.假设某数的真值为-100 1010B,在计算机内部表示为1011 0110B,该数采用的编码为(D) A.移码 B.原码 C.反码 D.补码 3.…