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

文章目录

  • 数据库事务
  • 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,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

12.5,12.15AVL树更新,定义,插入

定义平衡因子为右子树高度减去左子树高度 AVL树插入分为两步: 按照二叉搜索树的方式插入新节点调整平衡因子 对于平衡因子的调整,在插入之前,所有节点的平衡因子分为三种情况:0,1,-1插入后,新…

漏洞复现-海康威视 NCG 联网网关 login.php 目录遍历漏漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

C语言数据结构-----二叉树(3)二叉树相关练习题

前言 前面详细讲述了二叉树的相关知识,为了巩固,做一些相关的练习题 文章目录 前言1.某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为?2.下列数据结构中,不适合采用顺序存…

R语言【rgbif】——occ_search对待字符长度大于1500的WKT的特殊处理真的有必要吗?

一句话结论:只要有网有流量,直接用长WKT传递给参数【geometry】、参数【limit】配合参数【start】获取所有记录。 当我在阅读 【rgbif】 给出的用户手册时,注意到 【occ_search】 强调了 参数 【geometry】使用的wkt格式字符串长度。 文中如…

Springboot管理系统数据权限过滤(二)——SQL拦截器

上一节Springboot管理系统数据权限过滤——ruoyi实现方案对数据权限实现方案有了认识,本文将进一步优化权限过滤方案,实现对业务代码零入侵。 回顾上一章中权限方案: 主要是通过注解拦截,拼接好权限脚本后,放到对象变…

P2P如何使用register_attention_control为UNet的CrossAttention关联AttentionStore

上次的调试到这里了,写完这篇接着看,prepare_latents_ddim_inverted 如何预计算 inversion latents: /home/pgao/yue/FateZero/video_diffusion/pipelines/p2p_ddim_spatial_temporal.py 1. 原始的UNet3D的CrossAttention和SparseCausalAtte…

详解git pull和git fetch的区别

git pull和git fetch的区别, 网上人云亦云胡说八道的实在是太多了,误导我很久。 今天看到一个说得好的,记录一下。 前言 在我们使用git的时候用的更新代码是git fetch,git pull这两条指令。但是有没有小伙伴去思考过这两者的区别呢&#xff…

Docker 的基本概念、优势、及在程序开发中的应用

Docker 是一种容器化平台,它通过使用容器化技术,将应用程序及其依赖性打包到一个独立的、可移植的容器中,从而实现应用程序的快速部署、可靠性和可扩展性。 下面是 Docker 的一些基本概念和优势: 容器:Docker 使用容器化技术,将应用程序及其依赖性打包到一个可移植的容器…

[密码学]AES

advanced encryption standard,又名rijndael密码,为两位比利时数学家的名字组合。 分组为128bit,密钥为128/192/256bit可选,对应加密轮数10/12/14轮。 基本操作为四种: 字节代换(subBytes transformatio…

Postman介绍和快速使用

Postman 是什么? Postman 是一个流行的API(Application Programming Interface)开发工具,它使得开发者可以很容易地创建、测试、共享和文档化API。Postman 提供了一个友好的用户界面,来发送HTTP请求,接收响…

bp神经网络学习

1.input(1:m,:)‘含义 矩阵A第一列的转置矩阵。(x,y)表示二维矩阵第x行第y列位置的元素,x为:则表示所有的行。因此,A(:,1)就表示A的第1列的所有元素,这是一个列向量。 所以这里input(1:m,:)表示1到m行,所有列,而后面…

python设计模式之工厂模式、策略模式、生产者-消费者模式

前言 这篇主要总结下 设计模式: 工厂模式、策略模式、生产者-消费者模式, 用python举例说明 一、策略模式 1.1 理论理解 顾名思义,根据情况来选择不一样的《策略》。 这种设计模式主要适用于: 希望能够根据特定条件选择方法的情况…

【谭浩强C语言:前八章编程题(多解)】

文章目录 第一章1. 求两个整数之和(p7) 第二章2. 求三个数中的较大值&#xff08;用函数&#xff09;(p14、p107)3.求123...n(求n的阶乘&#xff0c;用for循环与while循环)(P17)1.循环求n的阶乘2.递归求n的阶乘(n< 10) 4.有M个学生&#xff0c;输出成绩在80分以上的学生的学…

紫光FPGA DDR3 IP使用和注意事项(axi4协议)

紫光DDR3 IP使用 对于紫光ddr3 IP核的使用需要注意事情。 阅读ddr ip手册&#xff1a; 1、注意&#xff1a;对于写地址通道&#xff0c;axi_awvalid要一直拉高&#xff0c;axi_awready才会拉高。使用的芯片型号时PG2L100H-6FBG676&#xff0c;不同的型号IP核接口和axi的握手协…

计算机网络 网络层上 | IP数据报,IP地址,ICMP,ARP等

文章目录 1 网络层的两个层面2 网络协议IP2.1 虚拟互联网络2.2 IP地址2.2.1 固定分类编址方式2.2.2 无分类编制CIDR2.2.3 MAC地址和IP地址区别 2.3 地址解析协议ARP2.3.1 解析过程 2.4 IP数据报格式 3 IP层转发分组流程4 国际控制报文协议ICMP4.1 ICMP格式结构4.2 分类4.2.1 差…

【物联网】EMQX(二)——docker快速搭建EMQX 和 MQTTX客户端使用

一、前言 在上一篇文章中&#xff0c;小编向大家介绍了物联网必然会用到的消息服务器EMQ&#xff0c;相信大家也对EMQ有了一定的了解&#xff0c;那么接下来&#xff0c;小编从这篇文章正式开始展开对EMQ的学习教程&#xff0c;本章节来记录一下如何对EMQ进行安装。 二、使用…

系列八、约束

一、约束 1.1、概述 约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据&#xff0c;通过这种规则&#xff0c;可以保证数据库中数据的正确性、有效性和完整性。 1.2、分类 1.3、注意事项 约束是作用于表中字段上的&#xff0c;可以在创建表/修改表的时候添加…

vue3的大致使用

<template><div class"login_wrap"><div class"form_wrap"> <!-- 账号输入--> <el-form ref"formRef" :model"user" class"demo-dynamic" > <!--prop要跟属性名称对应-->…

2023 OADC:开放原子云社区正式启航,Curve、Kyuubi获奖

12月16-17日&#xff0c;2023开放原子开发者大会&#xff08;OADC&#xff09;在江苏省无锡市召开。大会首日&#xff0c;由网易数帆联合发起的“开放原子云社区”宣告成立&#xff0c;随后网易数帆资深云原生专家侯诗军分享了稳定性保障的前沿实践&#xff0c;Curve、Apache K…

引领位置服务驱动:腾讯地图 WebService 服务端 API 实用指南

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&…