MySQL在Linux下的目录结构
一、Windows系统中MySQL5.7及以上版本的my.ini所在目录
二、Linux系统中,MySQL8.0所有的目录
-
查看所有的目录
-
各目录的作用
目录 功能 1 /var/lib/mysql 数据库文件的存放路径(最关心的) 2 /usr/bin mysql命令所在的目录 3 /etc/my.cnf 配置文件,相当于Windows系统中的my.ini 4 /usr/share/mysql-8.0 MySQL其它配置文件所在的目录 -
/var/bin/mysql目录中的文件
三、MySQL自带的数据库
-
MySQL自带的系统数据库
-
四个系统数据库的作用
① mysql
MySQL 系统自带的核心数据库,它存储了MySQL的用户账户和权限信息,一些存储过程、事件的定 义信息,一些运行过程中产生的日志信息,一些帮助信息以及时区信息等。
② information_schema
MySQL 系统自带的数据库,这个数据库保存着MySQL服务器 维护的所有其他数据库的信息 ,比如有 哪些表、哪些视图、哪些触发器、哪些列、哪些索引。这些信息并不是真实的用户数据,而是一些 描述性信息,有时候也称之为 元数据 。在系统数据库 information_schema 中提供了一些以 innodb_sys 开头的表,用于表示内部系统表。
③ performance_schema
MySQL 系统自带的数据库,这个数据库里主要保存MySQL服务器运行过程中的一些状态信息,可以 用来 监控 MySQL 服务的各类性能指标 。包括统计最近执行了哪些语句,在执行过程的每个阶段都 花费了多长时间,内存的使用情况等信息。
④ sys
MySQL 系统自带的数据库,这个数据库主要是通过 视图 的形式把 information_schema 和 performance_schema 结合起来,帮助系统管理员和开发人员监控 MySQL 的技术性能。
四、文件系统
-
文件系统
操作系统用来管理磁盘的结构被称为文件系统。
-
文件系统的作用
像InnoDB、MyISAM这样的存储引擎都是把表存储在磁盘上,即存储在文件系统上。当我们读取数据时,这些引擎会从文件系统中把数据读出来返回给我们,当我们像写入数据时,这些存储引擎会把这些数据又写回到文件系统中。(调优就是存储引擎从文件系统读取数据的过程的优化)
五、InnoDB引擎下自建数据库与文件系统的表示
-
自建一个数据库,MySQL会做两件事
① 在数据目录下创建一个和数据库名同名的子目录
② 同时在该同名子目录下创建一个名为db.opt的文件(仅限于MySQL5.7及之前版本),这个文件包含了该数据库的各种属性,比如该数据库的字符集和比较规则
-
查看在MySQL5.7下新建的与数据库同名的子目录
-
查看在MySQL8.0下新建的与数据库同名的子目录
-
扩展:系统表空间
默认情况下,InnoDB会在数据目录下创建一个名为 ibdata1 、大小为 12M 的文件,这个文件就是对应的系统表空间在文件系统上的表示。怎么才12M?注意这个文件是 自扩展文件 ,当不够用的时候它会自 己增加文件大小。
5.7之后有了独立表空间,就不用ibdata1了,随着MySQL的发展,除了上述两种老牌表空间之外,现在还新提出了一些不同类型的表空间,比如通用 表空间(general tablespace)、临时表空间(temporary tablespace)等。