了解 MySQL 的存储引擎

news2024/11/25 2:56:09

点击上方“追梦 Java”关注,一起追梦!

9bb58903f6c9fcc6c196a7f67d647607.png

存储引擎的主要工作就是与文件系统进行数据交互,比如我们常用的 InnoDB 引擎。

MySQL 的存储引擎是插件式的,应用程序无需针对不同的存储引擎进行对应的编码操作,MySQL 提供了一套标准的 API 标准,MySQL 服务会自动处理不同的存储引擎与文件系统的读写,用户层面没有感知。

存储引擎是指定在表上面的,每个表都可以指定其自己的引擎;不管使用什么存储引擎,都会产生一个后缀为 frm 的文件,改用来定义表结构。

1、MySQL 的存储引擎介绍

序号
存储引擎名称存储引擎特点
1
MyISAMMysql5.5版本之前的默认存储引擎
2InnoDBMysql5.5及以后版本的默认存储引擎,目前用的最多的一个存储引擎 
3CSV数据存储以CSV文件,不适用大表或者数据的在线处理,适用于数据的快速导入与导出 
4
Memory数据都是存储在内存中,服务重启数据丢失,默认16M空间,可用于查询结果内存计算,创建临时表存储需要计算的数据
5
Archive数据存储为ARZ文件格式,只支持insert和select两种操作,可用于数据备份

2、掌握 MyISAM 与 InnoDB 引擎的区别

Mysql5.5 版本之前默认的存储引擎就是 MyISAM 存储引擎,MySQL 中比较多的系统表使用 MyISAM 存储引擎,系统临时表也会用到 MyISAM 存储引擎,但是在 Mysql5.5 之后默认的存储引擎就是 InnoDB  存储引擎了。原因主要是 MyISAM 是表级锁定,限制了数据库读/写的性能;另外一个原因 MyISAM 不支持事务,基于以上两点,InnoDB 引擎使用的非常广泛。

对比 InnoDB    MyISAM 
文件存储方式

.frm 表定义文件;

.ibd 数据文件

.frm 表定义文件;

.myd 数据文件;

.myi 索引文件

索引方式 B+ TreeB+ Tree 

count(*) 

全表扫描 无需扫描
锁机制表锁、 行锁表锁
事务支持事务的ACID不支持事务 
常用场景读写操作读多写少操作,比如配置表 

3、MyISAM 与 InnoDB 数据文件存放路径

-- 查看数据存储的文件路径
show variables like 'datadir';

4、InnoDB 逻辑存储结构

MySQL的存储结构分为5级:表空间、段、簇、页、行。

表空间(TableSpace):表空间可以看做是 InnoDB 存储引擎逻辑结构的存储结构的大容器,所有的数据都存放在表空间中,分为:系统表空间、独占表空间、通用表空间、临时表空间、Undo表空间。

段(Segment):表空间是由各个段组成的,分为:数据段、索引段、回滚段等,段是一个逻辑的概念,一个 .ibd文件(独立表空间文件)里面会由很多个段组成。创建一个索引会创建两个段,一个是索引段(leaf node segment),索引段管理非叶子节点的关键字和引用数据;一个是数据段:(non-leaf node segment),数据段管理叶子节点的行记录数据。

区/簇(extents):一个段由很多的簇(也可以叫区)组成,每个区的大小是1MB(64个连续的页),每一个段至少会有一个簇,一个段所管理的空间大小是无限的,可以一直扩展下去,但是扩展的最小单位就是簇。

页/块(page):为了高效管理物理空间,簇是由连续的页组成的空间,一个簇中有64个连续的页(1MB/16 KB = 64),这些页面在物理上和逻辑上都是连续的。页是 InnoDB 存储引擎磁盘管理的最小单位,每个页默认 16KB,通过 innodb_page_size 设置。

行(Row):MySQL5.7 以后默认的行格式(Row_format)为:DYNAMIC,Row_format 可在创建数据表时指定,大家了解有这么一回事就可以了。

文件系统中,操作系统和内存进行文件交换,最小的单位也是页,不过文件系统的页默认是 4KB,MySQL 数据库的页默认是 16KB,目的是为了一次 IO 操作可以获取更多的数据。

后面将为大家介绍 SQL 语句在 MySQL 中的执行过程

有用的话点个在9cf974f84daf05ef619628b508d2fa30.png

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

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

相关文章

什么是布道师?看完这篇文章你就懂了

布道师这个术语可能对许多人来说还比较陌生,但实际上,布道师在软件行业中扮演着非常重要的角色。他们是软件产品的积极倡导者和用户之间的桥梁,致力于传递好消息、收集反馈,并与用户建立良好的关系。在本文中,我们将深…

Linux —— 查看进程命令及进程优先级

目录 一,查看进程命令 1,ps 命令 ps axj ps aux ps l ps -l 2,top 命令 3,ptree 命令 4,pgrep 命令 三,进程优先级 PRI NI 一,查看进程命令 ps、top、pstree、grep; 1&…

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践

一、 相关活动介绍: 自从上次参加完CSDN联合腾讯云发起的《云原生之降本增效》活动后,只是停留聚焦在优秀实践方法论、资源与弹性、架构设计上的了解,本次《腾讯云 Finops Crane 开发者集训营》是深入了解并实践基于 FinOps 框架开展的一个成…

001-Spring简要原理分析

Bean的生产 class到beanDefinition beanDefinition到Bean Bean查找流程 根据类型找找到多个根据名称找 AOP 在实例化后创建代理对象返回 把之前创建的Bean塞入代理对象的 target 字段中 事务 利用AOP代理掉数据源 在提交事务的时候 关闭自动提交手动提交事务异常回滚事…

【力扣算法16】之 18. 四数之和 python

文章目录 问题描述示例1示例2提示 思路分析代码分析完整代码详细分析运行效果截图调用示例运行结果 完结 问题描述 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[…

MySQL Schema 比较同步工具汇总(2023 版)

数据库 schema 比较工具使你能够识别关系数据库中对象结构的差异,并在多个数据库中同步你的特定对象。它通常用于以下情况: 将数据库变更从私有分支合并到团队的主分支在同构数据库中保持 schema 一致性构建新的数据库测试环境根据应用需求将数据库 sch…

与国外客户会面后,一些用语整理

与客户进行了会面,当客户离开工厂,我们需要对讨论过的内容进行整理并发邮件给客户,这里会用到一些客套语,今天分享部分给大家参考! Well received and thank you for the update, will be sure to take note on those…

利用 DNSLog无回显注入

DNSLog概念 DNSLog(域名系统日志)是一种特殊的技术和服务,用于捕获和记录通过域名系统(DNS)协议进行的请求和响应。它的目的是帮助用户跟踪、分析和管理DNS流量,并收集与域名相关的信息。 基本上&#xf…

JDBC 异常处理(SQLException)

异常处理允许您以受控的方式处理异常情况,例如程序定义的错误。 发生异常情况时,将引发异常。抛出这个词意味着当前程序停止执行,并且控件被重定向到最接近的适用catch子句。如果不存在适用的catch子句,则程序的执行结束。 JDBC…

提升内功之模拟实现库函数strlen/strncpy/strcmp/strcat/strstr/memcpy/memmove

strlenstrncpystrcmpstrcatstrstrmemcpymemmove strlen strlen函数的作用就是求字符串的首元素开始往后计算字符串的长度&#xff0c;直到’\0‘&#xff0c;但不会把\0的长度计算进去 #include<stdio.h>size_t Strlen(const char* src) {size_t count 0;while (*src ! …

SpringBoot 集成 EasyExcel 3.x导入导出

SpringBoot 集成 EasyExcel 3.x导入导出 介绍 EasyExcel 是一个基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具。它能让你在不用考虑性能、内存的等因素的情况下&#xff0c;快速完成 Excel 的读、写等功能。 EasyExcel文档地址&#xff1a; https://easyex…

IDEA + Spring Boot + Security + MyBatis Plus+Mysql低代码快速开发平台

IDEA Spring Boot Security MyBatis PlusMysql低代码快速开发平台 一、系统介绍1.环境配置 二、系统展示1. 管理员登录2.主页3.用户管理4.角色管理5. 权限管理6. 部门管理7. 数据字典8.文件管理9.系统配置10.电子邮件11.站内消息12.数据监控13.定时任务14.在线用户15.任务日…

芯片验证板卡设计方案:基于VU440T的多核处理器多输入芯片验证板卡

基于VU440T的多核处理器多输入芯片验证板卡 一、板卡概述 基于XCVU440-FLGA2892的多核处理器多输入芯片验证板卡为实现网络交换芯片的验证&#xff0c;包括四个FMC接口、DDR、GPIO等&#xff0c;板卡用于完成甲方的芯片验证任务&#xff0c;多任务功能验证。 …

图书管理系统【C语言】

咱就是说这太令人绝望了&#xff01; &#xff01;&#xff01; 图书管理系统 这是一个平平无奇的系统。 一、系统要求 1、实现以下基本功能 1.添加图书 2.删除图书 3.保存图书 4.图书列表 5.修改图书 6.查找图书 7.图书排序 …

网络安全运维工程师的主要职责

什么是安全运维工程师呢&#xff1f;安全运维工程师就是网络安全大方向下的网络安全运行与维护的一个细分岗。 IT运维工作方向比较多&#xff0c;列如安全运维、数据运维、应用运维、系统运维等&#xff0c;今天我们就来了解一下网络完全运维工程师是什么&#xff1f;同时也了…

【Java】顺序表

文章目录 顺序表LinkedListArrayList构造方法带参&#xff08;int&#xff09;构造不带参构造满&#xff0c;需要扩容 remove()remove(int)remove(Object) subList() 几点注意顺序表的优缺点优点&#xff1a;缺点&#xff1a; 顺序表 底层是数组&#xff0c;进行动态分配后可以…

NAT种类和NAT穿越

NAT种类 说明 NAT有三种类型&#xff1a;静态NAT(tatic NAT)、动态地址NAT(Pooled NAT)和网络地址端口转换(NetworkAddress PortTranslation&#xff0c;NAPT)。 其中静态NAT设置起来最简单&#xff1b; 内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址&#x…

求出0~100000之间的所有“水仙花数”并输出

求出0~100000之间的所有“水仙花数”并输出。 “水仙花数”是指一个N位数&#xff0c;其各位数字的n次方之和正好等于该数本身。 如&#xff1a;1531^3 5^3 3^3 , 则153是一个“水仙花数” 先来了解一下水仙花数的概念&#xff1a; 水仙花数只是自幂数的一种&#xff0c;严…

Flutter侧边栏组件Drawer

主要代码&#xff1a; drawer: const Drawer(child: Column(children: [Row(children: [Expanded(flex: 1,child: UserAccountsDrawerHeader(accountName: Text("张三"),accountEmail: Text("xxxqq.com"),currentAccountPicture: CircleAvatar(backgroundI…

解决git克隆到本地的仓库文件夹不显示红色感叹号、绿色对号等图标的问题

电脑有时候重启或者别的什么原因导致本地仓库不显示绿勾或者红色感叹号的符号 第一步: win加R然后输入regedit打开注册表 第二步: 按下面路径打开 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers 找到如下图在Tort…