前面说了innoDB表在mysql5.6.6之前存储在系统空间,5.6.6之后存储在独立的空间,表结构存储在.frm文件,里面记录着字符集,行规则等,表数据存储在.ibd里面,里面存储着数据和索引。
myISAM表存储数据
myISAM表不同的是,上面说的innoDB因为聚簇索引b+树节点是索引即数据,数据即索引,索引和数据是存在同一个文件的.ibd。但myISAM数据存放在 数据文件,索引存放在索引文件,当我们在指定数据库建立myISAM表时,会有三个文件:test.frm,test.MYD,test.MYI。其中test.MYD是数据文件,.MYI是索引存放索引的索引文件。
视图在文件中的表示
我们都指定,视图其实是虚拟的表,查询的是指定表的本身,索引视图并没有真实的数据,只需要存储视图的结构,如果创建视图 ,则会生成一个视图名.frm的文件。
其他文件
除了上述说的文件外,数据库还存着为了mysql能高效运行的额外文件,主要包括:
服务器进程文件:我们知道,每运行一个mysql服务器,都意味着启动一个进程,mysql会吧进程id写入一个特定的文件。
服务器日志文件:在服务器运行时候,会产生各种各样的日志,比如查询日志,错误日志,二进制日志,redo日志等,这些日志会有各种用途,以后的文章会详细说明。
默认生成SSL和RSA证书和秘钥文件:主要是为了客户端和服务端安全通信生成的一些文件。
文件系统对数据库的影响(注意事项)
因为mysql生成的数据库,表等取的名字,会在文件系统中自动生成同名的目录级或者文件,导致文件系统的一些限制就会出现:
1)、数据库和表名称不能超过文件系统允许的最大长度:因为文件名称和目录名称在文件系统上都会有限制,那取同名的mysql名称时候,肯定会被限制长度。
2)、特殊字符问题:mysql会自动除数字和拉丁字母外的所有字符在文件名称转成编码值来取文件名,比如‘test?’取同名的文件名因为?不属于数字和拉丁字母,.frm文件就是 test@003f.frm。
3)、文件大小受限系统文件大小:与文件名称同理,表数据里存储的大小,不可能超过文件系统限制的文件大小,所以还是会被受限制。
MYSQL数据库系统的简介
前面我们说了mysql有好几个数据库,这些数据库包含了mysql服务器运行过程所需要的一些运行状态信息。
Mysql:非常核心的数据库,存储着mysql用户账号和权限信息,一些存储过程,事件定义的信息,一些运行过程中产生的日志信息,一些帮助信息时区信息。
Information_schema:这个数据库保留着mysql服务器维护所有其他数据库信息,比如哪些表,哪些视图,哪些触发器,哪些列,哪些索引等。这些并不是真实的用户信息,是一些描述信息,有时候也称为元数据。
Performance_schema:主要保存着mysql服务器运行过程中的状态信息,算是对mysql性能监测。比如最近执行哪些sql,查询时间耗费多少,内存使用情况等。
Sys:主要通过视图的方式吧information_schema和performance_schema结合起来,让我们更容易了解性能信息。