Mysql磁盘存储
Mysql 的数据的访问和持久化都需要磁盘来当作存储工具
frm、ibd文件
在mysql中当我们创建表的时候,mysql可以帮助创建一个 .frm 文件和 .ibd 文件。 其中 .frm 文件是描述表结构定义的文件,而 .ibd 文件是 Innodb 引擎特有的,用于记录 Innodb 表的数据。
一般这两个文件存在于Mysql的data目录下。而且文件名就是创建的表名。
Innodb的文件存储格式和行存储格式
Innodb中的表是分文件存储的,表中的数据都是按照一定的格式存储在文件中的。
Innodb的文件格式由参数 innodb_file_format 指定。可以使用 show variables like 'innodb_file_format';
查看
Antelope文件格式是较早的,它支持的行存储格式为:Compact、Redundant
Barracuda 是新的文件存储格式,它兼容Antelope,它支持的行存储格式:Compressed、Dynamic
Innodb表的行存储格式由参数 innodb_default_row_format 指定,行存储格式表明了表中的每行数据是如何存储在文件中的,不同存储格式有不同的优缺点,也适合不同的场景,也会决定数据库的使用性能。
例如,使用 Compressed 这种格式可以使行记录有更高的压缩比,如果一个物理页能存放的行记录越多,它的索引或记录查找会更快,内存消耗也会更小,但是压缩数据本身也会带回额外的系统开销。
注意一点,在迁移数据库的时候,需要关注源实例和目标实例之间行存储格式是否匹配。比如你有一个 MyISAM 的表要迁移到 InnoDB 上,并且 MyISAM 表的 Row Format 为默认值 Fixed ,此时需要改成 Dynamic ,因为这两种格式对变长字段如 varchar/blob/text 等的处理是不一致的。