本章就是要唠叨一下InnoDB
和MyISAM
这两个存储引擎的数据如何在文件系统中存储的。
数据目录:MySQL服务器程序在启动时会到文件系统的某个目录下加载一些文件,之后在运行过程中产生的数据也都会存储到这个目录下的某些文件中,这个目录就称为数据目录
,我们下边就要详细唠唠这个目录下具体都有哪些重要的东西。
数据目录
是用来存储MySQL
在运行过程中产生的数据。
我们每当我们新建一个数据库时,进行的操作:
在数据目录
下创建一个和数据库名同名的子目录
在该与数据库名同名的子目录下创建一个名为db.opt
的文件,这个文件中包含了该数据库的各种属性,比方说该数据库的字符集和比较规则是个啥。
我们的数据其实都是以记录的形式插入到表中的,表有:表的结构,表中数据。
InnoDB
和MyISAM
这两种存储引擎都在数据目录
下对应的数据库子目录下创建了一个专门用于描述表结构的文件:表名.frm
系统表空间
独立表空间:InnoDB
并不会默认的把各个表的数据存储到系统表空间中,而是为每一个表建立一个独立表空间,也就是说我们创建了多少个表,就有多少个独立表空间。
使用独立表空间
来存储表数据的话,会在该表所属数据库对应的子目录下创建一个表示该独立表空间
的文件:表名.ibd。
如:test.ibd
文件就用来存储test
表中的数据和索引。。
test.frm文件就用来描述表结构。。
MyISAM
中的索引全部都是二级索引,
该存储引擎的数据和索引是分开存放的。(innodb中数据与聚簇索引存放在一起的)。
创建test表就有:
test.frm test.MYD test.MYI
test.frm来存放表结构,test.MYD
代表表的数据文件,也就是我们插入的用户记录;test.MYI
代表表的索引文件,我们为该表创建的索引都会放到这个文件中。
视图其实是虚拟的表,也就是某个查询语句的一个别名而已,所以在存储视图
的时候是不需要存储真实的数据的,只需要把它的结构存储起来就行了。只会存储一个视图名.frm