Mysql 如何使用InnoDB和ROW_FORMAT=compressed获取压缩数据
我将长json字符串存储在mysql表中,并使用以下方法创建了该表: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'
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()
返回(未压缩)字符串的实际长度
您可以使用信息模式来了解压缩对您有多好