MySQL学习Day16—MySQL的数据目录

一、MySQL8的主要目录结构

1.数据库文件的存放路径:/var/lib/mysql/

MySQL服务器程序在启动时会到文件系统的某个目录下加载一些文件,之后在运行过程中产生的数据也都会存储到这个目录下的某些文件中,该目录就称为数据目录。

2.相关命令目录:/user/bin和/user/sbin

安装目录下非常重要的bin目录,它里面存储了许多关于控制客户端和服务器程序的命令,而数据目录是用来存储MySQL在运行过程中产生的数据。

3.配置文件目录:/user/share/mysql-8.0;/etc/mysql

二、数据库和文件系统的关系:

像 InnoDB、 MyISAM 这样的存储引擎都是把表存储在磁盘上的,操作系统用来管理磁盘的结构被称为 文件系统,所以用专业一点的话来表述就是:像 InnoDB、 MyISAM 这样的存储引擎都是把表存储在文件系统上的。当我们想读取数据的时候,这些存储引擎会从文件系统中把数据读出来返回给我们,当我们想写入数据的时候,这些存储引擎会把这些数据又写回文件系统。

1.查看默认数据库:SHOW DATABASES

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

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

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

**(4)sys:**MySQL系统自带的数据库,主要是通过视图的形式把information_schema和performance_shcema结合起来,帮助系统管理人员和开发人员监控MySQL各项性能。

2.数据库在文件系统中的表示:

使用CREATE DATABASE创建一个数据库后,首先在数据目录下创建一个和数据库名同名的子目录,然后在与该数据库名同名的子目录下创建一个名为db.opt的文件,这个文件中包含了该数据库的各项属性,比如该数据库的字符集和比较规则。

数据库a和表b:

(1)如果表b采用Innodb存储引擎,则\data\a中会产生1或者2个文件

b.frm:描述表结构文件,字段长度等

如果采用系统表空间模式的,数据信息和索引信息都存储在ibdata1中

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

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

(2)如果表b采用MyISAM存储引擎,则\data\a中会产生3个文件:

MySQL5.7 中产生b.frm描述表结构文件,字段长度等;MySQL8.0中产生b.xxx.sdi描述表结构文件,字段长度等。

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

b.MYI(MYIndex):存放索引信息文件

3.视图在文件系统中的表示:

MySQL中的视图其实是虚拟的表 ,也就是某个査询语句的一个别名而已,所以在存储视图的时候是不需要存储真实的数据的,只需要把它的结构存储起来就行了。和表一样,描述视图结构的文件也会被存储到所属数据库对应的子目录下边,只会存储一个视图名.frm的文件。

相关推荐
永远不会的CC8 分钟前
浙江华昱欣实习(4月23日~ 4月19日)
后端·学习
二哈赛车手8 分钟前
新人笔记---实现简易版的rag的bm25检索(利用ES),以及RAG上传时的ES与向量数据库双写
java·数据库·笔记·spring·elasticsearch·ai
xxjj998a13 分钟前
Laravel4.x核心特性全解析
android·mysql·laravel
爱上好庆祝16 分钟前
学习js的第五天
前端·css·学习·html·css3·js
何中应19 分钟前
CentOS 7安装、卸载MySQL数据库(二)
数据库·mysql·centos
qiaozhangchi27 分钟前
求解器学习笔记
笔记·python·学习
KmSH8umpK29 分钟前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第六篇
数据库·redis·分布式
梁萌1 小时前
mysql使用事件做日志表数据转移
数据库·mysql
lThE ANDE1 小时前
MySQL中的TRUNCATE TABLE命令
数据库·mysql
kexnjdcncnxjs1 小时前
Redis如何记录每一次写操作_开启AOF持久化机制实现命令级追加记录
jvm·数据库·python