InnoDB、MyISAM这样的存储引擎都是把表存储在文件系统上的,读取数据的时候,存储引擎从文件系统拿数据,写入数据的时候,存储引擎向文件系统写数据。
通过SHOW VARIABLES LIKE ‘datadir’ 可以查看MySQL的数据目录,数据目录用于存储MySQL运行过程中产生的数据。
表信息分为两种
表结构定义信息表中数据对于表结构信息,MyISAM和InnoDB这两种存储引擎都是在数据库子目录下建立一个 表名.frm的文件,这个文件是一个二进制格式存储的。
对于表中数据,MyISAM和InnoDB存储方式是不同的
为了更好的管理页,提出了表空间的概念,每一个表空间可以划分为很多页。
系统表空间。系统表空间只有一份,表中的所有数据都要存储到这个系统表空间独立表空间。每个表独立建一个独立表空间,对应一个独立表空间文件,表名.ibd。在MyISAM中的索引全部都是二级索引,那么在它所在数据库对应的xiaohaizi目录下会为test表创建这三个文件: test.frm test.MYD test.MYI
其中test.MYD代表表的数据文件,也就是我们插入的用户记录;test.MYI代表表的索引文件,我们为该表创建的索引都会放到这个文件中。
MySQL中的视图是虚拟的表,所以在存储视图的时候是不需要存储真实的数据的,只需要把它的结构存储起来就行了。和表一样,描述视图结构的文件也会被存储到所属数据库对应的子目录下边,只会存储一个视图名.frm的文件。