03.MySQL事务及存储引擎笔记

news2024/9/19 10:40:29

事务

在这里插入图片描述

查看/设置事务

select @@autocommit; --查看当前数据库的事务状态,1表示开启,0表示关闭
set @@autocommit = 0; --关闭自动事务提交

采用关闭自动事务提交我们就可以手动进行事务提交,但是这种设置方式是对整个数据库起作用,一些可以立即事务提交的操作,我们也需要commit。所以一般采用下面这种方式开启事务。

开启事务

start transactionbegin;

提交事务

commit;

回滚事务

rollback;

事务四大特性

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

并发事务问题

脏读: 一个事务读到另一个事务还没有提交的数据。

不可重复读: 一个事务先后读取同一条记录,但两次读取的数据不同。

幻读: 一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这条记录,好像出现了“幻影”。
在这里插入图片描述

这里事务A先执行id=1的查询语句,发现并没有这条数据,此时事务B过来插入id=1的数据并提交,事务A查询不到数据后进行插入操作,发现数据已经存在,执行一次查询操作又发现数据不存在,就像出现了“幻觉”一样。

隔离级别

MySQL默认的隔离级别是可重复读,Oracle是读已提交。

隔离级别脏读不可重复读幻读
Read uncommitted
Read committed×
Repeatable Read(默认)××
Serializable×××

我们可以设置事务的隔离级别,来演示并发事务安全问题。先设置事务的隔离级别后,开启两个命令行窗口模拟并发事务。


MySQL体系结构

在这里插入图片描述

  • 连接层

    最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。

  • 服务层

    第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等。

  • 引擎层

    存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信。服务器通过API和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要来选取合适的存储引擎。

  • 存储层

    主要是将数据存储在文件系统之上,并完成与存储引擎的交互。

存储引擎

存储引擎就是建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎称为表类型。

查看/指定存储引擎

创建表时指定存储引擎:

create table 表名(
	字段1  类型  约束,
    ...
    字段n  类型  约束
)engine = innodb;

通过建表语句查看表的存储引擎

show create table 表名;

查看当前数据库支持的存储引擎

show engines;

在这里插入图片描述

主要关注:MEMORY、InnoDB、MyISAM

Memory

Memory引擎的表数据是存储在内存中的,由于所受到硬件问题或断电问题影响,只能将这些表作为临时表或缓存使用。

特点

  • 内存存放。
  • hash索引(默认)。

文件

xxx.sdi:存储表结构信息。

MyISAM

MyISAM是MySQL早期的默认存储引擎。【视频读作MySM】

特点

  • 不支持事务,不支持外键。
  • 支持表锁,不支持行锁。
  • 访问速度快。

文件

xxx.sdi:存储表结构信息。

xxx.MYD:存储数据。

xxx.MYI:存储索引。

InnoDB

InnoDB是一种兼顾可靠性高性能的通用存储引擎,在MySQL5.5之后,InnoDB是默认的MySQL存储引擎。

特点

  • DML操作遵循ACID模型,支持事务
  • 行级锁,提高并发访问性能。
  • 支持外键约束,保证数据的完整性和正确性。

文件

xxx.ibd:xxx代表的是表名,innoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi)、数据和索引。参数:innodb_file_per_table,默认是开启的:

show variables like 'innodb_file_per_table';
Variable_nameValue
innodb_file_per_tableON

我们可以通过命令行模式查看表的表结构中存放的信息:ibd2sdi 表名.ibd

逻辑存储结构
在这里插入图片描述
Page是磁盘操作的最小单元,区是固定大小1M,页是固定大小16K,一个区可以包含64个页。

总结

在这里插入图片描述

在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统还可以根据实际情况选择多种存储引擎进行结合。

  • InnoDB:是MySQL的默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,那么InnoDB存储引擎是比较合适的选择。
  • MyISAM:如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择它是非常合适的。
  • Memory:将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。缺点就是对表的大小有限制,太大的表无法缓存在内存中,并且无法保证数据的安全性。

MySQL中表锁和行锁有什么区别:
表锁: 偏向MyISAM存储引擎,开销小,加锁快;无死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行锁: 偏向InnoDB存储引擎,开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

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

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

相关文章

CMake学习(二):使用CMake构建包含其他库的C++项目

文章目录 一. 构建一个包含其他库的项目二. 构建过程1. 创建程序源文件2. 构建项目并编译源代码 附件 一. 构建一个包含其他库的项目 CMake学习(一):使用CMake构建一个简单的C项目 在这上一篇文章中,我们已经了解了如何使用CMake创建一个基本项目。在这…

华为数通方向HCIP-DataCom H12-831题库(多选题:21-40)

第21题 网络管理员A希望使用ACL匹配特定的路由条目,请问以下哪些路由条目将被图中的ACL规侧匹配? acl number 2000 rule 10 permit source 10.0.0.0 0.0.6.0A、10.0.0.1/32 B、10.0.0.0/24 C、10.0.1.0/24 D、10.0.2.0/24 答案: 解析: 通配符十进制6转换二进制为00000110,…

从Excel到智能化:智能报表的演进与未来发展趋势

摘要:本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 报表的迭代历程 报表工具的诞生与计算机技术的出现和信息技术的进步密不可分。下图是报…

javascript追加标签

页面样式(初始化): 开头追加标签: 结尾追加标签: 开头结尾追加标签: js代码: 样式展示: js追加标签

议题征集|The Open Group 2023亚太区年度颁奖盛典暨ESG架构年度大会诚邀演讲嘉宾!

每个人心中 都有各自对ESG架构管理的想象与理解 我们期待用一场汇聚 真知灼见与探索实践的盛典 重新定义架构的奇妙 ▼ 在全球可持续发展浪潮下,ESG目标(环境、社会和治理)的重要性愈发凸显。越来越多的企业认识到,以ESG为基…

第二十章 综合案例——基于多态的职工管理系统

1、管理系统需求 职工管理系统可以用来管理公司内所有员工的信息 本教程主要利用C来实现一个基于多态的职工管理系统 公司中职工分为三类:普通员工、经理、老板,显示信息时,需要显示职工编号、职工姓名、职工岗位、以及职责 普通员工职责&…

Python —— hou.NetworkItem class

在一个network内,所有可见元素的基类; 此类没有方法,仅作为 hou.NetworkMovabelItem、hou.NodeConnection 基类存在,这两个子类在网络编辑器内均是可见的,是没有真正有意义的基类的;通过提供一个公共的基类…

如何避免阿里云对象储存OSS被盗刷

网站app图片的云端存储离不开对象存储oss,而最难为的问题就是app做的出名了,少不了同行的攻击,包含ddos,cc攻击以及oss外链被盗刷! 防盗链功能通过设置Referer白名单以及是否允许空Referer,限制仅白名单中的域名可以访…

【stm32】stm32MX定时器

一、在STM32MXCube中配置参数 利用TIM2实现间隔定时,每隔0.2秒将LED1的开关状态翻转 二、在函数里面写翻转 1、寻找定时中断的回调函数 2、htim->Instance指的是*htim里面的实例 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){if(htim->I…

聚观早报 | OPPO Find N3首发;AI带来新红利

【聚观365】10月23日消息 OPPO Find N3首发 AI带来新红利 丰田展示EPU纯电皮卡 MIUI官微改名为“小米澎湃 OS” 沙特汽车工厂建立 OPPO Find N3首发 近日OPPO正式发布Find N3折叠旗舰,首发搭载获得国密二级认证的汇顶科技独立安全芯片GSEA0。得益于该芯片拥有…

数组遍历里多个radio-group的问题解决

对于数组的遍历的单选组合问题如下 <view class"swiper-box-list"><view v-for"obj in firstTabsInfo" :key"obj.productId"><view class"secondProduct"><view class"menu-topic-bottom-color">&…

win11系统如何访问ie浏览器(不用额外安装IE浏览器,使用win11系统自带功能即可访问ie浏览器)

文章目录 一、背景二、win11系统访问IE浏览器步骤 一、背景 笔记本电脑win11系统中已经将IE浏览器抛弃了&#xff0c;默认安装的是Edge浏览器&#xff0c;我的电脑是华为 matebook 14s, 系统win11家庭中文版&#xff0c;已经不支持安装IE浏览器了&#xff0c;在有Edge浏览器的…

会声会影2023破解版安装包下载附带补丁注册机

提到视频剪辑软件&#xff0c;浮现在我们脑海的可能就是满屏的功能键和眼花缭乱的操作界面。类似pr、AE之类的视频软件&#xff0c;操作界面看起来十分复杂&#xff0c;很多用户上手困难。而会声会影界面简单&#xff0c;功能齐全&#xff0c;也能完成专业级的视频制作。操作简…

【C++】引用’‘的深入解析

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

QT QGLWidge

QGLWidget 学习 前言1.四边形 QGLWidget 2*32. 正方体 1*2前言 1.四边形 QGLWidget 2*3 坐标 效果 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //清除屏幕和深度缓存glLoadIdentity(); //重置当前的模型观察矩阵glTranslate…

ElasticSearch安装、插件介绍及Kibana的安装与使用详解

ElasticSearch安装、插件介绍及Kibana的安装与使用详解 1.安装 ElasticSearch 1.1 安装 JDK 环境 因为 ElasticSearch 是用 Java 语言编写的&#xff0c;所以必须安装 JDK 的环境&#xff0c;并且是 JDK 1.8 以上&#xff0c;具体操作步骤自行百度 安装完成查看 java 版本 …

算法基础学习|前缀和差分

前缀和 代码模板 一维前缀和模板 S[i] a[1] a[2] ... a[i] a[l] ... a[r] S[r] - S[l - 1]二维前缀和模板 S[i, j] 第i行j列格子左上部分所有元素的和 以(x1, y1)为左上角&#xff0c;(x2, y2)为右下角的子矩阵的和为&#xff1a; S[x2, y2] - S[x1 - 1, y2] - S[x2, …

如何最有效地使用ChatGPT:提问技巧与策略

前言 在如今信息技术高速发展的时代&#xff0c;像ChatGPT这样的大型自然语言处理模型为我们提供了一个强大的工具&#xff0c;以获取各种信息和答案。然而&#xff0c;要充分利用这一工具&#xff0c;您需要掌握一些提问技巧与策略&#xff0c;以确保获得最准确和有用的回答。…

人员定位在安全生产管理中的应用

人员定位技术正在成为安全生产管理中的重要工具&#xff0c;它利用各种定位技术来获取人员的位置信息&#xff0c;帮助管理人员更好地监控和保障人员安全。 关于人员定位管理 在安全管理工作中&#xff0c;人员定位技术主要用来跟踪和监测特定区域内的员工或来访者的位置&#…

CleanMyMac X免费macOS清理系统管家

近些年伴随着苹果生态的蓬勃发展&#xff0c;越来越多的用户开始尝试接触Mac电脑。然而很多人上手Mac后会发现&#xff0c;它的使用逻辑与Windows存在很多不同&#xff0c;而且随着使用时间的增加&#xff0c;一些奇奇怪怪的文件也会占据有限的磁盘空间&#xff0c;进而影响使用…