当前位置: 首页 > news >正文

MySQL的数据目录

文章目录

  • MySQL的数据目录
    • 1. MYSQL目录结构
    • 2. 数据库与文件系统的关系
      • 2.1 查看默认数据库
      • 2.2 数据库在文件系统中的表示
        • 2.1.1 MyISAM存储引擎模式
        • 2.1.2 InnoDB存储引擎模式
      • 2.3 视图在文件系统中的表示
      • 2.4 小结

MySQL的数据目录

1. MYSQL目录结构

  • 查询主要目录结构:find / -name mysql

    在这里插入图片描述

  • 进入数据目录:cd /var/lib/mysql/
    在这里插入图片描述
    查看那个文件夹存放数据目录: show variables like 'datadir';
    在这里插入图片描述

  • 相关命令目录cd /usr/bin(mysqladmin、mysqlbinlog、mysqldump等命令)和/usr/sbin。
    在这里插入图片描述

  • 配置文件目录:/usr/share/mysql-8.0(命令及配置文件),/etc/mysql(如my.cnf)在这里插入图片描述

2. 数据库与文件系统的关系

2.1 查看默认数据库

  • 查看默认数据库:SHOW DATABASES;,可以看到有4个数据库是属于MySQL自带的系统数据库。
    在这里插入图片描述
    • mysql

      MySQL 系统自带的核心数据库。它存储了MySQL的 用户账户和权限信息,一些存储过程事件的定义信息,一些运行过程中产生的日志信息,一些帮助信息以及时区信息等。

    • information_schema

      保存着MySQL服务器 维护的所有其他数据库的信息
      比如有哪些表、哪些视图、哪些触发器、哪些列、哪些索引。这些信息并不是真实的用户数据,而是一些描述性信息,有时候也称之为 元数据 。在系统数据库 information_schema 中提供了一些以innodb_sys 开头的表,用于表示内部系统表。

    • performance_schema
      MySQL 系统自带的数据库,这个数据库里主要保存MySQL服务器运行过程中的一些状态信息,可以用来 监控 MySQL 服务的各类性能指标 。包括统计最近执行了哪些语句,在执行过程的每个阶段都花费了多长时间,内存的使用情况等信息。

    • sys
      MySQL 系统自带的数据库,这个数据库主要是通过 视图 的形式把 information_schema 和performance_schema 结合起来,帮助系统管理员和开发人员监控 MySQL 的技术性能。

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

  • 看一下我的计算机上的数据目录下的内容: cd /var/lib/mysql
    在这里插入图片描述
    这个数据目录下的文件和子目录比较多,除了 information_schema 这个系统数据库外,其他的数据库在 数据目录 下都有对应的子目录。

以创建的 emp1数据库为例,在MySQL8.0 中打开:(emp1表中创建了test表)

2.1.1 MyISAM存储引擎模式

使用MyISAM引擎建表:会产生三个文件:我这里安装的mysql8.0,在mysql8.0中使用MyISAM建表:

	CREATE TABLE `student_myisam` (`id` bigint NOT NULL AUTO_INCREMENT,`name` varchar(64) DEFAULT NULL,`age` int DEFAULT NULL,`sex` varchar(2) DEFAULT NULL,PRIMARY KEY (`id`))ENGINE=MYISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb3
  • mysql5.0中表明.frm存放表结构,字段长度等

    mysql8.0中.sdi文件:描述表结构文件,字段长度等。注意mysql8.0中没有了.frm文件

  • .MYD存放表数据数据信息文件,存储数据信息(如果采用独立表存储模式)

  • .MYI存放表索引信息文件
    在这里插入图片描述

2.1.2 InnoDB存储引擎模式
  • 使用InnoDB建表:会产生1个或者2个文件:

    CREATE DATABASE emp1;USE emp1;CREATE TABLE `test` (`id` bigint NOT NULL AUTO_INCREMENT,`name` varchar(64) DEFAULT NULL,`age` int DEFAULT NULL,`sex` varchar(2) DEFAULT NULL,PRIMARY KEY (`id`)
    )
    
  • 表.frm存放表结构,字段长度等

  • 如果采用 系统表空间 模式的,数据信息和索引信息都存储在 ibdata1在这里插入图片描述

  • 如果采用 独立表空间 存储模式,还会产生 .ibd 文件(存储数据信息和索引信息

  • ①MySQL5.7 中会在data/a的目录下生成 db.opt 文件用于保存数据库的相关配置。 比如:字符集、比较规则。而MySQL8.0不再提供db.opt文件。

  • ② MySQL8.0中不再单独提供b.frm,而是合并在b.ibd文件中

    在这里插入图片描述

    • 在mysql8.0中,.frm文件不见了,表结构和表空间存储到ibd文件的目录下,mysql8自带解析ibd文件,可以使用ibd2sdi工具查看:ibd2sdi --dump-file=test.txt test.ibd在这里插入图片描述
      使用vim ./test.txt可以查看表结构,表结构存储在此
      在这里插入图片描述
      在这里插入图片描述

2.3 视图在文件系统中的表示

MYSQL中的 视图是虚拟的表,也就是某个查询语句的别名,所以在存储视图的时候不需要存储真实数据只需要把它的存储结构存储起来

和表一样,描述视图的文件也会被存储到所属数据库对应的子目录下边,只会存储一个视图名.frm的文件。如下图中的emp_details_view.frm

在这里插入图片描述

2.4 小结

MYSQL5.0之前默认使用MyISAM引擎,之后默认使用InnoDB引擎

对于数据库a , 表b :

  1. 如果表b采用 InnoDB ,data\a中会产生1个或者2个文件

    b.frm :描述表结构文件,字段长度
    如果采用 系统表空间 模式的,数据信息和索引信息都存储在 ibdata1
    如果采用 独立表空间 存储模式data\a中还会产生 b.ibd 文件存储数据信息和索引信息

    此外:
    MySQL5.7 中会在data/a的目录下生成 db.opt 文件用于保存数据库的相关配置。比如:字符集、比较 规则。而MySQL8.0不再提供db.opt文件。
    MySQL8.0不再单独提供b.frm,而是合并在b.ibd文件中

  2. 如果表b采用 MyISAM ,data\a中会产生3个文件:

    MySQL5.7 中: b.frm :描述表结构文件,字段长度等。
    MySQL8.0b.xxx.sdi :描述表结构文件,字段长度
    b.MYD (MYData):数据信息文件,存储数据信息(如果采用独立表存储模式)
    b.MYI (MYIndex)存放索引信息文件

视图在文件系统中的表示,只在.frm文件中存储表结构,不存储真实数据

http://www.lryc.cn/news/175051.html

相关文章:

  • 详解MySQL索引+面试题
  • 设计模式:桥接器模式(C++实现)
  • 公网远程访问GeoServe Web管理界面【内网穿透】
  • AIMS医院手术麻醉信息系统全套源码,自主版权,开箱即用
  • 中秋特辑——3D动态礼盒贺卡(可监听鼠标移动)
  • Json文件序列化读取
  • ClickHouse(15)ClickHouse合并树MergeTree家族表引擎之GraphiteMergeTree详细解析
  • 面试题库(二):Java基础
  • Linux:无法接收组播数据
  • R语言贝叶斯非参数模型:密度估计、非参数化随机效应META分析心肌梗死数据...
  • 在gazebo仿真环境中加载多个机器人
  • 少有人走的路阅读笔记
  • 极简解析!IP计费的s5爬虫IP
  • 动静分离和前后端分离
  • 【SpringBoot】集成SpringSecurity+JWT实现多服务单点登录,原来这么easy
  • 手把手教你使用PLSQL远程连接Oracle数据库【内网穿透】
  • 浅谈Deep Learning 与 Machine Learning 与Artificial Intelligence
  • 和 Node.js 说拜拜,Deno零配置解决方案
  • AxureRP制作静态站点发布互联网,实现公网访问【内网穿透】
  • 【好文推荐】openGauss 5.0.0 数据库安全——全密态探究
  • 堆的介绍与堆的实现和调整
  • 【广州华锐互动】马属直肠检查3D虚拟仿真课件
  • Nuxt 菜鸟入门学习笔记:路由
  • C++基本语法和注释
  • CSRF攻击
  • 2023 “华为杯” 中国研究生数学建模竞赛(D题)深度剖析|数学建模完整代码+建模过程全解全析
  • 【Proteus仿真】【STM32单片机】基于单片机的智能晾衣架控制系统
  • C/C++代码静态检测工具PC-Lint常见错误总结
  • 概率深度学习建模数据不确定性
  • Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解