免费服务器建站百度快照怎么优化排名
文章目录
- 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
可以查看表结构,表结构存储在此
- 在mysql8.0中,
2.3 视图在文件系统中的表示
MYSQL中的 视图是虚拟的表
,也就是某个查询语句的别名,所以在存储视图的时候不需要存储真实数据,只需要把它的存储结构存储起来
。
和表一样,描述视图的文件也会被存储到所属数据库对应的子目录下边,只会存储一个视图名.frm
的文件。如下图中的emp_details_view.frm
2.4 小结
MYSQL5.0之前默认使用MyISAM引擎,之后默认使用InnoDB引擎
对于数据库a , 表b :
-
如果表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文件中
。 -
如果表b采用 MyISAM ,data\a中会产生3个文件:
MySQL5.7 中:
b.frm
:描述表结构文件,字段长度等。
MySQL8.0 中b.xxx.sdi
:描述表结构文件,字段长度等
b.MYD (MYData)
:数据信息文件,存储数据信息(如果采用独立表存储模式)
b.MYI (MYIndex)
:存放索引
信息文件
视图在文件系统中的表示,只在.frm
文件中存储表结构,不存储真实数据