当前位置:网站首页>第02章 MySQL的数据目录【1.MySQL架构篇】【MySQL高级】
第02章 MySQL的数据目录【1.MySQL架构篇】【MySQL高级】
2022-08-01 06:39:00 【51CTO】
第02章 MySQL的数据目录
- 前言
- 推荐
- 第02章 MySQL的数据目录
- 2.4 小结
- 2.5 视图在文件系统的表示
- 2.6 其他的文件
- 最后
前言
2022/7/28 12:40
暑假学习ing
推荐
【MySQL数据库教程天花板,mysql安装到mysql高级,强!硬!-哔哩哔哩】
第02章 MySQL的数据目录
1.MySQL8的主要目录结构
安装好MySQL8之后,我们查看如下的目录结构:


1.1数据库文件的存放路径
MySQL数据库文件的存放路径:/var/lib/mysqI/
MySQL服务器程序在启动时会到文件系统的某个目录下加载一些文件,之后在运行过程中产生的数据也都会存储 到这个目录下的某些文件中,这个目录就称为数据目录。
MySQL把数据都存到哪个路径下呢?其实数据目录对应着一个系统变量datadir,我们在使用客户端与服务器建 立连接之后查看这个系统变量的值就可以了:
从结果上可以看出,在我的计算机上mysql的数据目录就是/var/lib/mysql。
1.2 相关命令的目录
相关命令的目录: /usr/bin (mysqladmin、mysqlbinlog、mysqldump等命令)和/usr/bin。


1.3 配置文件目录
配置文件目录:/usr/share/mysql-8.0(命令及配置文件),/etc/mysql(如my.cnf)

2.数据库和文件系统的关系
像InnoDB、MyISAM这样的存储引擎都是把表存储在磁盘上的,操作系统用来管理磁盘的结构被称为文件系统,所以用专业一点的话来表述就是:像InnoDB、MyISAM这样的存储引擎都是把表存储在文件系统上的。当我们想读取数据的时候,这些存储引擎会从文件系统中把数据读出来返回给我们,当我们想写入数据的时候,这 些存储引擎会把这些数据又写回文件系统。本章学习一下InnoDB和MyISAM这两个存储引擎的数据如何在文件系统中存储。
2.1查看默认数据库
查看一下在我的计算机上当前有哪些数据库:

可以看到有4个数据库是属于MySQL自带的系统数据库。
-
mysql MySQL系统自带的核心数据库,它存储了MySQL的用户账户和权限信息,一些存储过程、事件的定义信息, 一些运行过程中产生的日志信息,一些帮助信息以及时区信息等。 -
information_schema MySQL系统自带的数据库,这个数据库保存着MySQL服务器维护的所有其他数据库的信息,比如有哪些表、哪些视图、哪些触发器、哪些列、哪些索引。这些信息并不是真实的用户数据,而是一些描述性信息,有时候也称之为元数据。在系统数据库information_schema中提供了一些以innodb_sys开头的表,用于表示内部系统表。 -
performance_schema MySQL系统自带的数据库,这个数据库里主要保存MySQL服务器运行过程中的一些状态信息,可以用来监控MySQL服务的各类性能指标。包括统计最近执行了哪些语句,在执行过程的每个阶段都花费了多长时间,内存的使用情况等信息。 - sys
MySQL系统自带的数据库,这个数据库主要是通过视图的形式把information_schema和 performance_schema结合起来,帮助系统管理员和开发人员监控MySQL 的技术性能。
2.2数据库在文件系统中的表示
2.3 表在文件系统中的表示
2.3.1 InnoDB存储引擎模式
5.7版本中:

db.opt 是数据库datest1的参数,保存数据库的相关配置
emp.frm 是数据表emp的结构
emp.ibd 是数据表emp的数据 ,独立表空间数据也可以放在/var/lib/mysql/ibdata1 系统表空间 默认大小12M

③系统表空间与独立表空间的设置
我们可以自己指定使用系统表空间还是独立表空间来存储数据,这个功能由启动参数innodb_file_per_table 控制,比如说我们想刻意将表数据都存储到系统表空间时,可以在启动MySQL服务器的时候这样配置:
默认情况:
mysql8.0中:

没有db.opt
只有.idb没有.frm
表结构和表数据合一了。
Windows和linux一样。
疑问
怎么证明:表结构和表数据合一了。
解析ibd文件
ibd2sdi工具


2.3.2 MyISAM存储引擎模式
举例:创建一个MyISAM表,使用ENGINE选项显式指定引擎。因为InnoDB是默认引擎。
mysql5.7版本中:

InnoDB中:索引即数据,数据即索引,合在一起,ibd
MyISAM中:是分开的 .MYD是数据 .MYI 是索引
mysql8.0版本中:

.sdi 相当于.frm 存放元数据的
2.4 小结
举例:数据库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.0中b.xxx.sdi:描述表结构文件,字段长度等 -
b.MYD(MYData):数据信息文件,存储数据信息(如果采用独立表存储模式) -
b.MYI(MYIndex):存放索引信息文件
2.5 视图在文件系统的表示
我们知道MySQL中的视图其实是虚拟的表,也就是某个查询语句的一个别名而已,所以在存储视图的时候是不需要存储真实的数据的,只需要把它的结构存储起来就行了。和表一样,描述视图结构的文件也会被存储到所属数 据库对应的子目录下边,只会存储一个视图名.frm的文件。如下图中的:emp_details_view.frm,没有.ibd
2.6 其他的文件
除了我们上边说的这些用户自己存储的数据以外,数据目录下还包括为了更好运行程序的一些额外文件,主要包 括这几种类型的文件:
- 服务器进程文件
我们知道每运行一个MySQL服务器程序,都意味着启动一个进程。MySQL服务器会把自己的进程ID写入到一个文件中。 - 服务器日志文件
在服务器运行过程中,会产生各种各样的日志,比如常规的查询日志、错误日志、二进制日志、redo日志 等。这些日志各有各的用途,后面讲解。 - 默认/自动生成的SSL和RSA证书和密钥文件
主要是为了客户端和服务器安全通信而创建的一些文件。
最后
p104
2022/7/28 13:48
Markdown 5404 字数 241 行数
HTML 4119 字数 126 段落
边栏推荐
- 史上超强最常用SQL语句大全
- 七、MFC序列化机制和序列化类对象
- Bean的生命周期
- LeetCode 0149. Maximum number of points on a line
- "By sharing" northwestern university life service | | bytes a second interview on three sides by HR
- 【视觉SLAM十四讲】第一章理论详解
- Matlab simulink particle swarm optimization fuzzy pid control motor pump
- CSP-S2019兴奋不已
- 滚动条样式修改
- Zero-code website development tool: WordPress
猜你喜欢

MVVM project development (commodity management system 1)

Guest brush SQL - 2

【FiddlerScript】利用FiddlerScript抓包保利威下载

Matlab simulink particle swarm optimization fuzzy pid control motor pump

Robot growth in China

目标检测概述-上篇

matlab 风速模型 小波滤波

Practical training Navicat Chinese and English mode switching

mysql中添加字段的相关问题

leetcode43 string multiplication
随机推荐
戴尔PowerEdge服务器R450 RAID配置步骤
第6章——数据库的安全性
Create, modify and delete tables
Robot_Framework: keyword
问下 mysql向pg同步多个表的话 有什么好的方案吗?
【视觉SLAM十四讲】第一章理论详解
mysql中添加字段的相关问题
Hunan institute of technology in 2022 ACM training sixth week antithesis
Srping中bean的生命周期
轻量级的VsCode为何越用越大?为什么吃了我C盘10G?如何无痛清理VsCode缓存?手把手教你为C盘瘦身
第5章——以程序方式处理MySQL数据表的数据
LeetCode 0149. Maximum number of points on a line
Does flinkcdc have any solution for mysql's date field type conversion?
Information system project managers must recite the work of the core test site (56) Configuration Control Board (CCB)
ORACLE 实现另外一个用户修改包(package)
Speed up your programs with bitwise operations
The BP neural network based on MATLAB voice characteristic signal classification
滚动条样式修改
MySQL row locks and gap locks
Data organization -- singly linked list of the linear table