Mysql 行存储的文件格式

一、Mysql行存储的文件格式概述

InnoDB存储引擎有两种文件格式

Antelope:compact与redundant两种行记录格式

Barracuda:compress与dynamic两种行记录格式

查看表的行记录格式:

show table status like '%sys_appinfo%'\G;

Mysql 行存储的文件格式_第1张图片

查看数据库默认的行记录格式:

show variables like '%row_format%';

Mysql 行存储的文件格式_第2张图片

文件格式查看方式:

show variables like 'innodb_file%';('innodb_file)

Mysql 行存储的文件格式_第3张图片

二、四种行记录格式的不同

MySQL5.7默认使用Barracuda文件格式与dynamic行记录格式。

compact是目前使用最多的一种,而dynamic时新版本默认的行记录格式。

在生产中,我们应该选择哪种行记录格式?

这要说明行溢出:行溢出简单来讲就是需要存储的数据在当前页面之外,拆分到多个页进行存储。

针对大数据类型text或者blob存储在其字段中的数据,dynamic实际采用的数据都存放在溢出的

页中(off-page),而数据页只存储前20个字节指针。在compact行格式下,溢出的列只存放768个

前缀字节。dynamic这种行格式模式,针对溢出列所在的新页利用率更高。所以,目前生产环境

中建议尽量使用dynamic这种行格式模式,针对溢出列所在的新页利用率更高。

redundant是最早的行记录格式,相比compact要消耗更多的存储空间,不建议使用。

compressed是压缩格式,是对数据和索引进行压缩。但只是针对物理存储层面上的压缩,而在

内存中是不压缩的。当数据调用到内存中就涉及到转换,会很消耗CPU资源,而且效率很低。

压缩比不高,大概直接进1/2的比例。压缩带来负面影响大,数据库TPS会下降,影响现有的线上业务,

不建议使用。

 

转载于:https://www.cnblogs.com/xibuhaohao/p/10717256.html

你可能感兴趣的:(Mysql 行存储的文件格式)