MySQL 的数据目录
MySQL里面有4个数据库是属于MySQL自带的系统数据库:
-
mysql
这个数据库贼核心,它存储了MySQL的用户账户和权限信息,一些存储过程、事件的定义信息,一些运行过程中产生的日志信息,一些帮助信息以及时区信息等。
-
information_schema
这个数据库保存着MySQL服务器维护的所有其他数据库的信息,比如有哪些表、哪些视图、哪些触发器、哪些列、哪些索引吧啦吧啦。这些信息并不是真实的用户数据,而是一些描述性信息,有时候也称之为元数据。
-
performance_schema
这个数据库里主要保存MySQL服务器运行过程中的一些状态信息,算是对MySQL服务器的一个性能监控。包括统计最近执行了哪些语句,在执行过程的每个阶段都花费了多长时间,内存的使用情况等等信息。
-
sys
这个数据库主要是通过视图的形式把
information_schema
和performance_schema
结合起来,让程序员可以更方便的了解MySQL服务器的一些性能信息。
表结构
就是该表的名称是啥,表里边有多少列,每个列的数据类型是啥,有啥约束条件和索引,用的是啥字符集和比较规则吧啦吧啦的各种信息,这些信息都体现在了我们的建表语句中了。为了保存这些信息,InnoDB
和MyISAM
这两种存储引擎都在数据目录
下对应的数据库子目录下创建了一个专门用于描述表结构的文件,文件名是这样:
表名.frm
在MySQL5.6.6以及之后的版本中,InnoDB
并不会默认的把各个表的数据存储到系统表空间中,而是为每一个表建立一个独立表空间,也就是说我们创建了多少个表,就有多少个独立表空间。使用独立表空间
来存储表数据的话,会在该表所属数据库对应的子目录下创建一个表示该独立表空间
的文件,文件名和表名相同,只不过添加了一个.ibd
的扩展名而已,所以完整的文件名称长这样:
表名.ibd
比方说假如我们使用了独立表空间
去存储xiaohaizi
数据库下的test
表的话,那么在该表所在数据库对应的xiaohaizi
目录下会为test
表创建这两个文件:
test.frm
test.ibd