第 8 章 数据的家——MySQL的数据目录

news2024/9/25 13:19:03

8.1 数据库和文件系统的关系

数据库把表存储在文件系统上。当我们读取数据时,存储引擎会从文件系统中把数据读出来返回给我们;当我们写入数据时,存储引擎会把这些数据写回文件系统。

8.2 MySQL数据目录

8.2.1 数据目录和安装目录的区别

数据目录是用来存储MySQL在运行过程中产生的数据。

8.2.2 如何确定MySQL中的数据目录
SHOW VARIABLES LIKE 'datadir';

在这里插入图片描述

8.3 数据目录的结构

8.3.1 数据库在文件系统中的表示

在MySQL中,每个数据库都对应数据目录下的一个子目录,或者说对应一个文件夹。当我们创建一个数据库时,MySQL会:

  1. 在数据目录下创建一个和数据库同名的子目录
  2. 在该目录下创建一个名为db.opt的文件,包含了该数据库的各种属性,比如字符集和比较规则

PS:MySQL 8 引入了新的系统表格,取消了原有的db.opt文件。在 MySQL 8 中,数据库的字符集和排序规则不再存储在数据目录中的 db.opt 文件里,而是存储在新的系统表 mysql.schemata

SELECT
  `SCHEMA_NAME`,
  `DEFAULT_CHARACTER_SET_NAME`,
  `DEFAULT_COLLATION_NAME`
FROM
  `information_schema`.`SCHEMATA`
WHERE
  `SCHEMA_NAME` = 'your_database_name';
8.3.2 表在文件系统中的表示

每个表的信息可以分为两种:

  1. 表结构的定义
  2. 表中的数据

InnoDB和MyISAM都在数据目录下对应的数据库子目录下创建了一个专门用于描述表结构的文件,文件名为表名.frm

PS:MySQL8.0中不再单独提供表名.frm,而是合并在表名.ibd文件中。

8.3.2.1 InnoDB是如何存储表数据的

表空间是一个抽象的概念,它可以对应文件系统上一个或多个真实文件(不同表空间对应的文件数量可能不同)。每一个表空间可以被划分为很多个页,表数据就存储在某个表空间下的某些页中。表空间分为以下几类:

  1. 系统表空间(system tablespace)

    系统表空间对应文件系统上一个或多个实际的文件。默认情况下,InnoDB会在数据目录下创建一个名为ibdata1的大小为12M的自扩展文件,就是对应的系统表空间在文件系统上的表示。MySQL5.5.7-5.6.6之间的各个版本,表中的数据都会被默认存储到穿上系统表空间。

  2. 独立表空间(file-per-table tablespace)

    在MySQL5.6.6以及之后的版本中,InnoDB不会默认地把所有表的数据存储到系统表空间中,而是为每一个表建立一个独立表空间,也就是有多少表就有多少表空间,文件名:表名.idb

  3. 其他类型的表空间

    通用表空间(general tablespace)、undo表空间(undo tablespace)、临时表空间(temporary tablespace)等。

8.3.2.2 MyISAM是如何存储表数据的

MyISAM的表数据都存放到对应的数据库子目录下,比如表test使用MyISAM存储引擎,则有:

  1. test.frm,表结构
  2. test.MYD,表数据
  3. test.MYI,索引
8.3.3 视图在文件系统中的表示

视图不需要存储真实的数据,只需要把它的结构存储起来,在数据库对应的子目录下,视图名.frm

8.3.4 其他的文件
  1. 服务器进程文件,MySQL服务器会把自己的进程ID写入到一个文件中。
  2. 服务器日志文件,比如查询日志、错误日志、二进制日志、redo日志等
  3. 默认/自动生成 的SSl和RSA证书和密钥文件

8.4 文件系统对数据库的影响

  1. 数据库名称和表名称长度受限于文件系统文件名称的最大长度
  2. 特殊字符
  3. 文件长度受限于文件系统的最大长度

8.5 MySQL系统数据库简介

SHOW DATABASES;

在这里插入图片描述

  1. mysql:存储了MySQL的用户账户和权限信息,一些存储过程、事件的定义信息,一些运行过程中产生的日志信息,一些帮助信息以及时区信息等。
  2. information_schema:保存着MySQL服务器维护的所有其他数据库的信息,比如有哪些表、哪些视图、哪些触发器、哪些列、哪些索引等等,这些并不是真实的用户数据,而是一些描述性信息,也被称为元数据。
  3. performance_schema:保存MySQL服务器运行过程中的一些状态信息,包括最近执行了哪些语句、执行耗时、内存使用情况等。
  4. sys:通过视图的形式把information_schema和performance_schema结合起来,方便程序员。

8.6 总结

  1. InnoDB、MyISAM会把数据存储在文件系统上
  2. 系统变量datadir表明了数据目录的路径
  3. 每个数据库对应数据目录下的一个子目录
  4. 对于InnoDB,表结构存储在表名.frm,表数据存储在表名.ibd(MySQL8后只有ibd)
  5. 对于MySQL,表结构存储在表名.frm,表数据存储在表名.MYD,索引存储在表名.MYI

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

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

相关文章

C++从入门到起飞之——list模拟实现 全方位剖析!

​ ​ ​ 🌈个人主页:秋风起,再归来~🔥系列专栏:C从入门到起飞 🔖克心守己,律己则安 目录 ​ ​1、list的整体框架 2、list迭代器 >整体分析 >整体框架 >成员函数 >运…

操作系统:实验六文件操作实验

一、实验目的 1、了解文件系统功能及实现原理。 2、掌握LINUX下文件操作的有关系统调用。 3、熟悉main函数带参数运行的有关操作过程。 4、通过模拟程序实现简单的一级文件系统或二级文件系统。 二、实验内容 1、编程显示文件自身。(1分) #includ…

分享两个方法分析python打包exe

在Python开发中,常常需要将Python脚本打包成独立的可执行文件,以便在没有Python环境的电脑上运行。你是否曾为此感到困惑,不知道该选择哪种工具来实现这一目标?其实,打包Python脚本并不难,关键在于选择合适…

Mybatis框架——缓存(一级缓存,二级缓存)

本章将简单介绍Mybatis框架中的缓存,欢迎大家点赞➕收藏,蟹蟹!!!💕 🌈个人主页:404_NOT_FOUND 🌈MyBatis环境搭建步骤(超全解析!!&am…

AI写论文真的可靠吗?免费推荐6款AI论文写作助手

在当今的学术研究和写作领域,AI论文写作助手已经成为不可或缺的工具。这些工具不仅能够提高写作效率,还能帮助研究者生成高质量的论文。以下是六款免费推荐的AI论文写作助手,包括千笔-aipasspaper,它们各自具有独特的功能和优势。…

【hot100篇-python刷题记录】【最小路径和】

R6-多维动态规划篇 好经典的dp题,纯粹的题。 多维动态规划无论是二维还是三维,无非是创建dp表,dp[][][][][][]即可 动态规划式子 dp[i][j]当前值min(dp[i][j-1],dp[i-1][j]) 边界问题处理:是否存在即可。哦对了好像不用这样&a…

探索异步之美:aiohttp库的魔力与奥秘

文章目录 探索异步之美:aiohttp库的魔力与奥秘背景:为何选择aiohttp?什么是aiohttp?如何安装aiohttp?简单函数使用方法场景应用常见Bug及解决方案总结 探索异步之美:aiohttp库的魔力与奥秘 背景&#xff1…

Linux教程七:文件目录类命令ls、cd(图文详解)

默认登录出现一个[用户localhost ~] 代表时登陆用户的家目录 1、 Linux ls命令 基本用法 ls:列出当前目录下的文件和目录(不包括以.开头的隐藏文件)。ls 目录名:列出指定目录下的文件和目录。 常用选项 -l:以长格式列出…

【Python 报错已解决】`TypeError: ‘method‘ object is not subscriptable`

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引言 在编程的世界里,我们经常会遇到各种报错,它们像隐藏在代码中的小怪兽,时不时跳出来给…

Java项目:基于SpringBoot+mysql在线拍卖系统(含源码+数据库+答辩PPT+毕业论文)

一、项目简介 本项目是一套基于SSM框架mysql在线拍卖系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能齐全、…

常见的性能测试方法!

前言 性能测试划分有很多种,测试方法也有很多种,更确切的说是由于测试方法的不同决定了测试划分的情况,但在测试过程中性能测试的划分没有绝对的界限,常用的有压力测试、负载测试和并发用户测试等。 性能测试的方法主要包括以下…

划分字母区间

划分字母区间 思路: 我觉得这道题最关键的一个思路就是,对于没一个字母,你一定要找到他的最后一次出现的位置,每一个片段必须要比这个大,然后该字符到这个end中其他的字符,也都要找到最后一次出现的位置&…

net6 core 接入nacos 实现服务注册入门使用,心跳检测和负载均衡

net6 core 接入nacos 实现服务注册入门使用,心跳检测和负载均衡 配置中心比较Apollo与Nacos_appollo 和 nacos-CSDN博客 一:安装nacos Release 2.2.3 (May 25th, 2023) alibaba/nacos GitHub 二、配置Nacos 注*Nacos 是使用的mysql 数据库&#x…

谷粒商城实战笔记-282~283-商城业务-订单服务-提交订单的问题

文章目录 一,282-商城业务-订单服务-提交订单的问题调试过程中出现的问题services面板介绍什么是 Services Panel?主要作用解决的痛点使用方法 二,283-商城业务-分布式事务-本地事务在分布式下的问题分布式事务问题解决方案分布式事务处理流程…

Hubspot AI 工具| 使用 6 款 HubSpot AI 工具,提升初创团队海外营销与销售效率

看看 HubSpot AI 工具如何完美助力中国出海与外贸企业加速落地全球 GTM 策略吧~ 在日益竞争激烈的全球市场中,初创企业想要获得成功,必须有效将产品推向市场,并建立客户基础,与竞争对手一较高下。 这需要精心策划的进入市场&…

常用于单北斗多频定位导航模块资料:ATGM332D-F8N

单北斗多频定位导航模块的高精度定位优点描述: 1、多频信号融合:单北斗多频定位导航模块能够接收和处理来自北斗卫星系统的多个频段信号。通过多频信号的融合处理,可以显著提高定位的精度。因为不同频段的信号在传播过程中受到的影响不同&…

力扣134-加油站(java题解)

题目链接:134. 加油站 - 力扣(LeetCode) 前情提要: 因为本人最近都来刷贪心类的题目所以该题就默认用贪心方法来做。 贪心方法:局部最优推出全局最优。 如果一个题你觉得可以用局部最优推出全局最优,并…

IO进程day06(进程间通信、信号、共享内存)

目录 【1】进程间通信 IPC 1》 进程间通信方式 2》 无名管道 1> 特点 2> 函数接口 3> 注意事项 练习:父子进程实现通信,父进程循环从终端输入数据,子进程循环打印数据,当输入quit结束。 3》有名管道 1> 特点 …

24数学建模国赛准备!!!!(10——马氏链模型)

详细获取资料方式在文章末尾!!!! 点击链接加入群聊获取资料以及国赛助力https://qm.qq.com/q/NGl6WD0Bky !!!!!!!!!&…

多场景建模: STAR(Star Topology Adaptive Recommender)

之前,分享了一篇关于多任务学习的文章:多任务学习MTL模型:MMoE、PLE,同样的还有关于多任务学习中的多目标loss优化策略。 这篇文章则开始一个与多任务学习有着紧密联系的系列:多场景建模学习。 前言 首先&#xff0…