13、不同存储引擎的数据表在文件系统里是如何表示的?

2023-10-30

MySQL 支持 InnoDB、MyISAM、Memory、Merge、Archive、CSV、BLACKHOLE 几种存储引擎,不同存储引擎的数据表在文件系统中的表示也各不相同。

MySQL 中的每一个数据表在磁盘上至少被表示为一个文件,即存放着该数据表结构定义的 .frm 文件。不同的存储引擎还有其它用来存放数据和索引信息的文件。

从 MySQL 8.0 版本开始,frm 表结构定义文件被取消,MySQL 把表结构信息都写到了系统表空间。

下面介绍不同存储引擎的数据表在文件系统中是如何表示的。

MyISAM

MyISAM 存储引擎的数据表在数据库目录里使用 3 个文件来代表,这些文件的基本名与数据表的名字相同,扩展名则表明了文件的具体用途。这三个文件的扩展名分别是:

  • .frm:表结构定义文件,存放着该数据表的结构定义。
  • .MYD:MY Data 的缩写,数据文件,存放着该数据表中各个行的数据。
  • .MYI: MY Index 的缩写,索引文件,存放着该数据表的全部索引信息。

下面创建存储引擎为 MyISAM 的 tb_myisam 表,SQL 语句如下。

mysql> SET default_storage_engine=MyISAM;
Query OK, 0 rows affected (0.02 sec)

mysql> CREATE TABLE tb_myisam(
    -> id INT
    -> );
Query OK, 0 rows affected (0.03 sec)

本节中所有创建的不同存储引擎的表在文件系统(数据目录)中的表示在文章末尾展示。

MERGE

MERGE 存储引擎的数据表其实是一个逻辑结构。它代表着由一组结构完全相同的 MyISAM 数据表所构成的集合。有关的查询命令会把它当作一个大数据表来对待。

MERGE 存储引擎的数据表除了拥有存储表结构定义的 .frm 文件以外,还有一个扩展名为 .mgr 的文件,这个文件里不保存数据,而是数据的来源地。通俗的说,就是一份由多个 MyISAM 数据表的名单构成的 MERGE 数据表。

下面创建存储引擎为 MERGE 的 tb_merge 表,SQL 语句如下。

mysql> SET default_storage_engine=Merge;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE tb_merge(
    -> id INT
    -> );
Query OK, 0 rows affected (0.02 sec)

InnoDB

对于 InnoDB 存储引擎的数据表,一个表对应两个文件,一个是 *.frm,存储表结构信息;一个是 *.ibd,存储表中数据。

下面创建存储引擎为 InnoDB 的 tb_innodb 表,SQL 语句如下。

mysql> SET default_storage_engine=InnoDB;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE tb_innodb(
    -> id INT
    -> );
Query OK, 0 rows affected (0.10 sec)

Memory

Memory 存储引擎的数据表是创建在内存中的数据表。因为 MySQL 服务器把 Memory 数据表的数据和索引都存放在了内存中而不是硬盘上,所以除了相应的 .frm 文件外,Memory 引擎表在文件系统里没有其它相应的代表文件。

下面创建存储引擎为 Memory 的 tb_memory 表,SQL 语句如下。

mysql> SET default_storage_engine=Memory;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE tb_memory(
    -> id INT
    -> );
Query OK, 0 rows affected (0.03 sec)

Archive

Archive 存储引擎的数据表除了拥有 .frm 表结构定义文件外,还有一个扩展名为 .arz 的数据文件,用来存储历史归档数据。执行优化操作时可能还会出现一个扩展名为 .arn 的文件。

下面创建存储引擎为 Archive 的 tb_archive 表,SQL 语句如下。

mysql> SET default_storage_engine=Archive;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE tb_archive(
    -> id INT
    -> );
Query OK, 0 rows affected (0.04 sec)

CSV

与其它类型的存储引擎相同,CSV 引擎表也会包含一个 .frm 表结构定义文件,此外还会创建一个扩展名为 .CSV 的数据文件。这个文件是 CSV 格式的文本文件,用来保存表中的实际数据。

.CSV 文件可以直接在 Excel 中打开,或者是使用其它文件编辑工具查看。另外,还有一个同名的元信息文件,文件扩展名为 .CSM,用来保存表的状态及表中保存的数据量。
由于 CSV 文件可被直接编辑,如果操作得当,可以不通过 SQL 语句直接修改 CSV 文件中的内容。

CSV 存储引擎基于 CSV 格式文件存储数据,由于自身文件格式的原因,所有列必须强制指定 NOT NULL。

下面创建存储引擎为 CSV 的 tb_csv 表,SQL 语句如下。

mysql> SET default_storage_engine=csv;
Query OK, 0 rows affected (0.02 sec)

mysql> CREATE TABLE tb_csv(
    -> id INT NOT NULL,
    -> name CHAR(10) NOT NULL
    -> );
Query OK, 0 rows affected (0.04 sec)

BLACKHOLE

由于在 BLACKHOLE 存储引擎的数据表中写入任何数据都会消失,所以除了 .frm 文件,BLACKHOLE 引擎表没有其他相应的代表文件。

下面创建存储引擎为 BLACKHOLE 的 tb_blackhole 表,SQL 语句如下。

mysql> SET default_storage_engine=BLACKHOLE;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE tb_blackhole(
    -> id INT
    -> );
Query OK, 0 rows affected (0.03 sec)

下图是不同存储引擎的数据表在文件系统中的表示。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

13、不同存储引擎的数据表在文件系统里是如何表示的? 的相关文章

  • JavaScript和C++的一些显著差异和学习tips

    之前学习JS来做Vue Node js前后端 最近开始重新学习C 显然这两者的差异巨大 主要注意的点 C 的语法结构 while for JS中没有数据类型 而C 的数据类型需要学习 例如DWORD等等 面向对象 JavaScript的对象
  • 人工智能基础篇

    人工智能基础篇 本篇目录 一 人工智能 机器学习 深度学习的关系 1 关系图 2 人工智能 3 人类智能过程 4 机器学习 5 深度学习 二 人工智能研究的领域 三 人工智能的应用场景 1 计算机视觉 2 语音技术 3 自然语言处理 4 决
  • C++学习第二弹之整数数据类型

    本文主要介绍C 数 整数 包括创建变量和编写各种类型的常量 整数 不同C 数据类型使用不同的内存来存储整数 内存越大能够表示的数值就越大 同时有的类型可以表示正值和负值 有些不能表示负值 C 基本整型有char short int long
  • C++设计模式由浅入深(一)—— 继承和多态

    一 继承和多态 C 首先是一个面向对象的语言 对象是C 程序的基石 通过类的继承和派生 软件工程师可以自由表达对软件系统中各个部分之间的关系与交互逻辑 定义各个组件之间的接口和实现 有秩序地组织起数据结构和代码 本书的目的不是为了教授C 语
  • 项目——电子词典(客户端、服务器交互,字典导入,单词查询)

    一 项目要求 登录注册功能 不能重复登录 重复注册 单词查询功能 历史记录功能 存储单词 意思 以及查询时间 基于TCP 支持多客户端连接 采用数据库保存用户信息与历史记录 将dict txt的数据导入到数据库中保存 按下ctrl c退出客
  • Fiddler抓包工具总结

    序章 Fiddler是一个蛮好用的抓包工具 可以将网络传输发送与接受的数据包进行截获 重发 编辑 转存等操作 也可以用来检测网络安全 反正好处多多 举之不尽呀 当年学习的时候也蛮费劲 一些蛮实用隐藏的小功能用了之后就忘记了 每次去网站上找也
  • qt 智能指针介绍

    简介 Qt 提供了很多智能指针 比较常见的有 QPointer QSharedDataPointer QSharedPointer QWeakPointer 和 QScopedPointer 描述 QPointer 4 0 已经过时 可以被
  • php fastcgi,配置apache以fastcgi运行php

    apache默认是用自带的mod php模块运行php 现在我们介绍使用fastcgi来执行php脚本 先说下fastcgi的优点 Fastcgi的优点 从稳定性上看 fastcgi是以独立的进程池运行来cgi 单独一个进程死掉 系统可以很
  • 解决高德地图AMap is not defined

    传送门 https blog csdn net qq 36317441 article details 77187369 总结一下 就是将script 标签引入的高德地图地址 放到body中
  • Leetcode 面试题 01.06.字符串压缩(Compress String LCCI)

    Leetcode 面试题 01 06 字符串压缩 1 题目描述 Leetcode题目链接 字符串压缩 利用字符重复出现的次数 编写一种方法 实现基本的字符串压缩功能 比如 字符串aabcccccaaa会变为a2b1c5a3 若 压缩 后的字
  • 虚拟机占用磁盘越来越大的解决方案大总结

    原文链接 https blog csdn net Shine Su article details 119676646 作者 填坑小霸王 在电脑上安装Vmware 安装ubuntu16 04 进行开发 使用过程中没有在意 忽然有一天发现磁盘
  • 【esp32&lvgl】-2.1 # esp32移植lvgl7驱动st7789屏幕(ESP-IDF框架)

    目录 一 前言 二 代码 三 硬件说明 四 ESP IDF设置 重要 五 屏幕偏移修改驱动文件 参考资料 一 前言 前几天在ardiuno框架下基于platformIO用TFT eSPI库实现了lvgl库的移植 这种方法虽然在lvgl的版本
  • 电源系列1:LDO 基本 原理(一)

    微信公众号 工程师看海 后台回复 LDO仿真文件 转载请注明原文地址 https blog csdn net u013608300 article details 108994763 1 前言 目前市场上无论什么电子产品 只要涉及到电就必须
  • ssh 运行 java,通过ssh将Java应用程序作为后台进程运行

    I m currently developing a simple deployment script for vms running ubuntu All these machines are supposed to run a java
  • 基于Springboot的SSO单点登陆系统的登陆操作实战

    一 前言 1 使用环境 SpringBoot2 X MyBatis 基于redis存储的springSession 2 基础学习 关于SSO的基础学习可以参考该文章 单点登录 SSO 从原理到实现 代码风格使用的是晓风轻的代码规范 对于其中
  • c语言的文法,c语言实现First文法

    最近编译原理课程实验做LL 1 中的First和Follow文法的算法实现 百度了半天 要么是要钱 要么是觉得好复杂 作为学渣的我看不懂 那为了完成实验 只能自己慢慢搞出来 由于之前的课也没怎么听 研究这两个文法都用了好长时间 那么关于Fi
  • Maven下Druid连接池配置及使用

    1 在pom xml中导入架包及jdbc架包
  • 如何做一个成功的系统架构师

    首先 何谓系统架构师 IBM工程师的说明是 架构师的主要责任是提供开发人员和项目经理之间的共用沟通媒体 他们负责让业务规则及需求与工程实践及限制相适应 以确保成功 中文Wiki上的说明是 系统架构师负责设计系统整体架构 从需求到设计的每个细

随机推荐

  • Pytorch学习(3):Tensor合并、分割与基本运算

    文章目录 前言 一 合并Cat Stack 1 Cat 2 Stack 二 分割Split Chunk 1 Split 2 Chunk 三 基本运算 1 加减乘除 2 矩阵乘法mm matmul 3 幂运算 4 指数exp 对数log 5
  • 从一年开发经验的视角看如何优雅编程

    编程绝非易事 需要大家在日常工作中仔细钻研 下面我们从实际业务开发的角度来分析一下如何优雅地进行编程 简单可以总结几点 1 整体理解业务 2 从开发角度分解业务 3 结合各业务点整体分析系统结构 4 针对每一个业务点进行边界分析 5 对每个
  • 网络编程之udp学习之udp的多播(组播)和广播案例03

    概述 关于多播 广播这些我Qt相关的文章 也有讲述过 https blog csdn net weixin 44517656 article details 105950817 ip相关知识 https blog csdn net weix
  • React与Vue的区别和对比

    前言 JavaScript是世界上最流行的语言之一 React和Vue是JS最流行的两个框架 但各有优缺点 本文将详细对比两大框架 目录 前言 一 框架背景 二 框架简介 三 框架共同点 四 各自优势 五 两者区别 六 应用场景 七 总结
  • 图的遍历(DFS & BFS)详解与完整代码+走迷宫

    一 深度优先遍历 DFS 基本思想 从初始访问结点出发 先访问第一个邻接结点 然后再以该邻接结点作为初始结点 访问它的第一个邻接结点 优先向纵向挖掘深入 而不是对一个结点的所有邻接结点进行横向访问 递归过程 深度优先遍历从某个顶点出发 首先
  • 关于C语言中源码反码补码的介绍

    最近在入门课里学习了原码反码补码 有些地方理解起来还是比较困难的 所以用一篇文章来梳理一下 首先我们要考虑这三个码的作用 我们都知道 计算机在储存信息时是使用二进制的 通过电信号的有无来表示0和1 而在C语言中数字类型都是默认有符号位的 在
  • 7-17 实数四舍五入后的相加运算

    本题目实现实数保留两位小数的四舍五入存储后 再相加 输入格式 输入两个双精度实数A B 输出格式 第一行输出A B的真实值 第二行输出A B进行四舍五入后再相加后的值 输入样例 12 345 4 896 输出样例 17 241000 17
  • 746. 使用最小花费爬楼梯

    class Solution public int minCostClimbingStairs vector
  • 将n个数按从大到小输出(C语言)

    用数组存储需要排序的数 用for循环输入需要排序的数 用冒泡排序法对n个数进行排序 最后用for循环输出排好的数 输入需要排序的数 for i 0 i lt n i scanf d a i 冒泡排序法进行排序 for int j 0 j l
  • 基于改进的混沌引力常数的引力搜索算法(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 Matlab代码实现 4 参考文献 1 概述 本文将十张混沌图嵌入到最近提出的基于人口的
  • 第 46 届 ICPC 国际大学生程序设计竞赛亚洲区域赛(沈阳)

    有时候 很简单的模板题 可能有人没有做出来 特指 I 到时候一定要把所有的题目全部看一遍 文章目录 B 题解 E F 题解 H I 题解 代码 J B 输入样例 3 2 1 2 1 2 3 1 输出样例 1 说明 In the first
  • qt问题之no known conversion from ... to “const QObject *“ ...

    函数体 connect socket SIGNAL readyRead this SLOT hasPendingMessage 解决办法 connect socket SIGNAL readyRead const QObject this
  • SAT&SMT

    前言 本文性质 个人学习笔记 SAT SATISFIABILITY 布尔可满足性问题 SMT Satisfiability Modulo Theories 可满足性模理论 根据哥德尔不完备定理 停机问题 莱斯定理 我们可以知道在有限时间内是
  • 基于Python的手机数据收集软件-爬虫可视化大屏Python爬虫安装数据分析与可视化计算机毕业设计

    更多项目资源 最下方联系我们 目录 一 项目技术介绍 二 项目配套文档 部分内容 资料获取 一 项目技术介绍 该项目含有源码 文档 PPT 配套开发软件 软件安装教程 项目发布教程 包运行成功以及课程答疑与微信售后交流群 送查重系统不限次数
  • Identity and Access Management - python decorators (代码)

    from functools import wraps def add greeting f wraps f def wrapper args kwargs print Hello return f args kwargs return w
  • nginx源码分析--状态机执行

    11个阶段处理HTTP请求 void ngx http core run phases ngx http request t r ngx int t rc ngx http phase handler t ph ngx http core
  • Markdown格式文档图片设置居中

    1 使用div设置对齐方式 div align center img src 图片路径 div 此处的center可以更换 left 左对齐 right 右对齐 center 居中 下图示例 div align center img src
  • 《算法》第二章——快排非递归实现

    思路 其实就是用栈保存每一个待排序子串的首尾元素下标 下一次while循环时取出这个范围 对这段子序列进行partition操作 代码 include
  • 如何保证代码质量

    代码质量的评估维度很多 我自己的理解有这几个层次 能用 gt 能读 gt 能改 gt 能适应业务的变更 高质量的代码不是一蹰而就的的 是从特别小的细节例如变量命名规则到高大上的架构设计 一点点积累而成的 关于架构设计的部分 正在阅读 重构
  • 13、不同存储引擎的数据表在文件系统里是如何表示的?

    MySQL 支持 InnoDB MyISAM Memory Merge Archive CSV BLACKHOLE 几种存储引擎 不同存储引擎的数据表在文件系统中的表示也各不相同 MySQL 中的每一个数据表在磁盘上至少被表示为一个文件 即