Mysql 如何使用InnoDB和ROW_FORMAT=compressed获取压缩数据

Mysql 如何使用InnoDB和ROW_FORMAT=compressed获取压缩数据,mysql,innodb,Mysql,Innodb,我将长json字符串存储在mysql表中,并使用以下方法创建了该表: ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8 还将为数据库返回以下设置: innodb_file_format = Barracuda (SHOW VARIABLES LIKE 'innodb_file_per_table';) innodb_file_per_table = ON (SHOW VARIABLES LIKE 'innodb_file_format'

我将长json字符串存储在mysql表中,并使用以下方法创建了该表:

ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8 
还将为数据库返回以下设置:

innodb_file_format = Barracuda (SHOW VARIABLES LIKE 'innodb_file_per_table';)
innodb_file_per_table = ON (SHOW VARIABLES LIKE 'innodb_file_format';)
字段类型设置为mediumtext

到目前为止,我想我已经遵循了书中的每一步

但是,在表中插入数据时,行的平均长度没有变化

SELECT AVG( LENGTH( json_field) ) FROM mytable
上面的命令仍然返回与切换到ROW_FORMAT=COMPRESSED之前相同的平均长度

我还使用标准的INSERT INTO mytable VALUES(…)命令,而不对这些值使用COMPRESS()

减少行长度时,我遗漏了什么

谢谢你的见解

更新:
请忽略我的问题,因为将压缩表的总大小与其非压缩版本进行比较表明大小已显著减小。

压缩在较低级别(页面和(或)Btree节点)上工作
LENGTH()
返回(未压缩)字符串的实际长度

您可以使用信息模式来了解压缩对您有多好

进一步阅读


到目前为止,比率(表大小)/(行数)似乎返回与以前相同的值。我应该执行什么命令或测试来检查压缩是否在我的InnoDB环境中实际工作?谢谢。请忽略我最后的评论,因为将压缩表的总大小与其非压缩版本进行比较表明大小已显著减小。请参阅更新。还可以查看相同标准具工作负载的压缩和未压缩格式的idb文件大小。例如,见。