MySQL数据 在 磁盘上是什么样子的

MySQL数据 在 磁盘上是什么样子的,取决于所使用的存储引擎。存储于引擎 是作用在 表! 上的

存储引擎

百度百科是这样定义存储引擎的:MySQL 中的数据用各种不同的技术存储在文件(或者内存)中,这些不同的技术以及配套的相关功能在 MySQL 中被称作 存储引擎。

简单来说就是不同的存储引擎,我们的数据存储的格式也会不一样。

我们知道 现在 MySQL 中常用的存储引擎有两种:MyISAMInnoDB

  • MySQL 5.5之前,MyISAM 是 默认的 存储引擎
  • MySQL 5.5开始,InnoDB 是 默认的 存储引擎

区别


MyISAMInnoDB
事务不支持❌支持
表/行锁只有表锁还引入了行锁
外键不支持❌支持✔
全文索引支持✔版本5.6 开始支持
读写速度更快更慢

从上面可以看出,MyISAM 最致命的一点就是不支持事务,而 InnoDB 支持。所以现在 InnoDB 已经成为我们使用的标配、最主流的存储引擎了。

命令工具

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

show engines;

查询当前默认的存储引擎

show variables like '%storage_engine%';

查询表的相关信息

show table status like '表名';

MyISAM

每个 MyISAM 表 都有 3个文件存储在磁盘上。这些文件的 名称 以 表名 开头,以 扩展名 指示文件类型。

  • .frm 文件(frame)存储表结构

  • .MYD 文件(MY Data)存储表数据

  • .MYI 文件(MY Index)存储表索引

MySQL 里的数据 默认是 存放在安装目录下的 data 文件夹中,也可以自己修改。
在这里插入图片描述

下面 以 MyISAM 作为存储引擎 创建一张表 t_user_myisam。
在这里插入图片描述

.MYI 文件 组织索引的方式就是 B+tree叶子节点 的 value 处存放的就是索引所在行的 磁盘文件地址

查找过程

首先会判断查找条件 where 中的字段 是否是 索引字段,
如果是就会先拿着这字段去 .MYI 文件里通过 B+tree 快速定位,从根节点开始定位查找;
找到后 再把这个索引关键字(就是我们的条件)存放的 磁盘文件地址拿到 .MYD 文件里面找,从而定位到索引所在行的记录。

请添加图片描述

InnoDB

每个 MyISAM 表 都有 2个文件存储在磁盘上。这些文件的 名称 以 表名 开头,以 扩展名 指示文件类型。

  • .frm 文件(frame)存储表结构
  • .ibd 文件(InnoDB Data)存储表 索引+数据

下面我创建了以 InnoDB 作为存储引擎的一张表 t_user_innodb。
在这里插入图片描述
InnoDB 把 索引 和 数据 都放在了 同一个文件 里存着了。
毋庸置疑,InnoDB 表里面的数据也是用 B+tree 数据结构 组织起来的。 下面我们来看看它具体是怎么存储的。
在这里插入图片描述
.ibd 存储数据的特点就是 B+tree 的叶子节点上包括了: 索引 和 该索引所在 行 的 所有列数据 。

查找过程

首先会判断查找条件 where 中的字段是否是索引字段,
如果是就会先拿着这字段去 .ibd 文件里通过 B+tree 快速定位,从根节点开始定位查找;
找到后直接把这个 索引关键字 及其记录所在行的 所有列数据 返回。
请添加图片描述

相关拓展

聚集(聚簇)索引

聚集索引:叶子节点包含了 完整的 数据记录。

简单来说就是 索引 和它所在行的 其它列数据 全部都在一起了。很显然,MyISAM 没有聚集索引,InnoDB 有。

InnoDB 的 主键索引 就是天然的 聚集索引。

有 聚集索引 当然就有 非聚集索引(稀疏索引)。对于 MyISAM 来说,它的索引就是非聚集索引。因为它的索引和数据是分开两个文件存的:一个 .MYI 存索引,一个 .MYD 存数据。

为什么 DBA 都建议表中一定要有主键,而且推荐使用整型自增?

为什么要有主键?

因为 InnoDB 表里面的数据必须要有一个 B+tree 的索引结构来组织、维护我们的整张表的所有数据,从而形成 .idb 文件。

那和主键有什么关系?

如果 InnoDB 创建了一张没有主键的表,那这张表就有可能没有任何索引,则 MySQL会选择所有具有唯一性并且不为 null 中的第一个字段的创建聚集索引。

如果没有唯一性索引的字段就会有一个隐式字段成为表的聚集索引:而这个隐式字段,就是 InnoDB 帮我们创建的一个长度为 6字节 的整数列 ROW_ID,它随着新行的插入单调增加,InnoDB 就以该列对数据进行聚集。

使用这个 ROW_ID 列的表都共享一个相同的全局序列计数器(这是数据字典的一部分)。为了避免这个 ROW_ID 用完,所以建议表中一定要单独建立一个主键字段。

为什么推荐使用整型自增?

首先整型的占用空间会比字符串小,而且在查找上比大小也会比字符串更快。字符串比大小的时候还要先转换成 ASCII 码再去比较。

如果使用自增的话,在插入方面的效率也会提高。

不使用自增,可能时不时会往 B+tree 的中间某一位置插入元素,当这个节点位置放满了的时候,节点就要进行分裂操作(效率低)再去维护,有可能树还要进行平衡,又是一个耗性能的操作。

都用自增就会永远都往后面插入元素,这样索引节点分裂的概率就会小很多。

二级索引

除聚集索引之外的所有索引都叫做二级索引,也称辅助索引。
它的叶子节点 不会存储 其它 所有列的数据,就只存储 主键值。
优点:保持一致性和节省空间。

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

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

相关文章

MySQL的相关操作

目录 一. 字符串函数 二. group by分组 2.1 作用 2.2 格式 2.3 举例 三. order by排序 3.1 格式 3.2 举例 四. limit 4.1 作用 4.2 举例 五. having 5.1 作用 5.2 举例 六. 正则表达式 七. 多表查询 7.1 定义 7.2 子查询 7.3 联合查询 纵向合并 7.4 交叉连…

网络安全-等级保护(等保) 2-7-3 GB/T 25058—2019 第7章 安全设计与实施

############################################################################### 对于安全厂家而言,最关心的内容在本章节,根据已确定的安全总体方案,完成技术措施和管理措施的详细设计和实施,包含具体的安全产品和管理要求。…

【Spring Boot】配置实战指南:Properties与YML的深度对比与最佳实践

目录 1.前言 2.正文 2.1配置文件的格式 2.2properties 2.2.1基础语法 2.2.2value读取配置文件 2.2.3缺点 2.3yml 2.3.1基础语法 2.3.2配置不同数据类型 2.3.3配置读取 2.3.4配置对象和集合 2.3.5优缺点 2.4综合练习:验证码案例 2.4.1分析需求 2.4.2…

20250519使用TF卡将NanoPi NEO core开发板刷机为Ubuntu core22.04.3系统完成之后执行poweroff自动关机

1、h3-sd-friendlycore-xenial-4.14-armhf-20210618.img.gz 在WIN10下使用7-ZIP解压缩/ubuntu20.04下使用tar 2、Win32DiskImager.exe 写如32GB的TF卡。【以管理员身份运行】 3、TF卡如果已经做过会有3个磁盘分区,可以使用SD Card Formatter/SDCardFormatterv5_WinE…

编译Qt5.15.16并启用pdf模块

编译Qt5.15.16并启用pdf模块 标题1.目录设置 -q-bulid –qt-everywhere-src-5.15.16 –bulid cd bulid 必须,否则会提示Project ERROR: You cannot configure qt separately within a top-level build. create .qmake.stash and .qmake.super in build folder …

“智”斗秸秆焚烧,考拉悠然以科技之力筑牢生态安全防线

清晨,薄雾笼罩着辽阔的田野,农民们开始了一天的劳作。然而,随着收割季的到来,秸秆焚烧问题也逐渐浮现,成为威胁空气质量与生态安全的隐患。传统监管方式往往显得力不从心,效率低下的困境亟待突破。在此背景…

Nockchain项目部署教程

Nockchain头矿窗口正在打开,不拼设备,现在部署,马上就要开挖了。 一、项目介绍 Nockchain 是结合了POW和ZKVM的区块链协议。 主要特点: 1)计算存储新域名空间三位一体架构,高吞吐量 2)使用No…

2025年气候持续大风,消纳减少,如何保收益?东润能源整体解决方案持续保收益保增长

引言 随着全球气候变化加剧,2025年极端天气频发,风资源丰富但电网消纳能力不足的问题日益突出,导致许多风电项目面临限电、收益下滑的挑战。如何在复杂的气候和电力市场环境下保障投资收益,成为行业关注的焦点。东润能源凭借领先的技术创新和综合能源解决方案,为风电行业…

2023河南CCPC省赛vp部分补题

A 模拟 暴力 对每个合法的前缀&#xff0c;判断后缀是不是合法 int a[29]; void solve(){string s;cin>>s;int t-1;if(s.size()1){return cout<<"NaN"<<endl,void();}for(int i0;i<27;i) a[i]0;for(int i0;i<s.size();i){a[s[i]-a];if(…

【2025保姆级】Open-WebUI五大功能区首曝!第一篇:管理员面板深度拆解,手把手讲解配置AI管理中枢

【2025保姆级】Open-WebUI五大功能区首曝&#xff01;第一篇&#xff1a;管理员面板深度拆解&#xff0c;手把手讲解&配置AI管理中枢 一、引言二、用户2.1 概述2.2 权限组 三、竞技场评估四、函数五、设置5.1 通用5.1.1 身份验证5.1.2 功能 5.2 外部连接5.2.1 OpenAI API5.…

docker上传镜像

向Docker Hub上传镜像&#xff0c;需要按照一定的步骤进行操作。 Docker Hub是Docker的官方镜像仓库&#xff0c;用户可以在其中存储、管理和部署Docker镜像。要向Docker Hub上传镜像&#xff0c;请遵循以下步骤&#xff1a; 创建Docker Hub账户&#xff1a; 访问Docker Hub官…

(十三)深入了解AVFoundation-采集:视频帧采集与实时滤镜处理

引言 在移动应用中&#xff0c;实时视频处理已成为视频拍摄、短视频、直播、美颜相机等功能的核心技术之一。从简单的滤镜叠加&#xff0c;到复杂的美颜、AR 特效&#xff0c;背后都离不开对每一帧图像的高效采集与处理。在前几篇文章中&#xff0c;我们已经实现了基本的视频采…

数字政务安全实战:等保2.0框架下OA系统防护全解析

近期在Python基础教学领域深入钻研函数机制、数据结构优化等内容时&#xff0c;深刻意识到信息安全作为技术基石的战略价值。在政务数字化转型浪潮中&#xff0c;Python凭借其高扩展性与丰富的安全生态库&#xff0c;成为构建政务OA系统安全防护体系的核心工具。本文将以等保2.…

Pytorch项目实战-2:花卉分类

一、前言 在深度学习项目中&#xff0c;数据集的处理和模型的训练、测试、预测是关键环节。本文将为小白详细介绍从数据集搜集、清洗、划分到模型训练、测试、预测以及模型结构查看的全流程&#xff0c;附带代码和操作说明&#xff0c;让你轻松上手&#xff01; 二、数据集 …

React Flow 边事件处理实战:鼠标事件、键盘操作及连接规则设置(附完整代码)

本文为《React Agent&#xff1a;从零开始构建 AI 智能体》专栏系列文章。 专栏地址&#xff1a;https://blog.csdn.net/suiyingy/category_12933485.html。项目地址&#xff1a;https://gitee.com/fgai/react-agent&#xff08;含完整代码示​例与实战源&#xff09;。完整介绍…

java小结(一)

java&#xff08;上&#xff09; 模块一 1.JDK,JRE,JVM 知识点 核心内容 易混淆点 JDK定义 Java Development Kit&#xff08;Java开发工具包&#xff09;&#xff0c;包含开发所需全部工具 JDK包含JRE的关系容易混淆 JRE定义 Java Runtime Environment&#xff08;Jav…

ddns-go安装介绍-强大的ipv6动态域名解析神器-家庭云计算专家

ddns-go 是一款轻量级开源动态域名解析工具&#xff0c;专注于解决动态IP环境下的域名绑定问题&#xff0c;尤其适配IPv6网络环境。其核心功能包括&#xff1a; 1.IPv6动态解析&#xff1a;自动检测本地IPv6地址变化&#xff08;支持网卡、接口或命令获取&#xff09;&#xf…

Docker-mongodb

拉取 MongoDB 镜像: docker pull mongo 创建容器并设置用户&#xff1a; 要挂载本地数据目录&#xff0c;请替换此路径: /Users/Allen/Env/AllenDocker/mongodb/data/db docker run -d --name local-mongodb \-e MONGO_INITDB_ROOT_USERNAMEadmin \-e MONGO_INITDB_ROOT_PA…

WooCommerce缓存教程 – 如何防止缓存破坏你的WooCommerce网站?

我们在以前的文章中探讨过如何加快你的WordPress网站的速度&#xff0c;并研究过各种形式的缓存。 然而&#xff0c;像那些使用WooCommerce的动态电子商务网站&#xff0c;在让缓存正常工作方面往往会面临重大挑战。 在本指南中&#xff0c;我们将告诉你如何为WooCommerce设置…

贪心算法 Part04

总结下重叠区间问题 LC 452. 用最少数量的箭引爆气球 和 LC 435. 无重叠区间 本质上是一样的。 LC 452. 用最少数量的箭引爆气球 是求n个区间当中 &#xff0c; 区间的种类数量 k。此处可以理解为&#xff0c;重叠在一起的区间属于同一品种&#xff0c;没有重叠的区间当然…