现在InnoDB支持对某一列(字段)进行压缩

2024-06-06 10:25:32 浏览数 (1)

InnoDB在之前提供了两种压缩技术

一种是早期的行格式压缩(COMPRESSED Row Format),该方法是在创建表时指定“ROW_FORMAT=COMPRESS”,并通过选项 KEY_BLOCK_SIZE 设置压缩比例。

另一种是新的页面压缩,在支持稀疏文件(Sparse file)的EXT4/XFS文件系统上,通过使用打洞(Punch Hole)特性进行压缩。

现在InnoDB支持对某一列(字段)进行压缩,它使列中存储的数据在写入存储时被压缩,并在读取时被解压缩。

三者之间的区别

压缩粒度不同

  • 行格式压缩和页面压缩是以整行或整页为压缩单位
  • 列压缩则是对指定的某些列单独进行压缩

支持下列类型

  • BLOB (including TINYBLOB, MEDIUMBLOB, LONGBLOG)
  • TEXT (including TINYTEXT, MEDUUMTEXT, LONGTEXT)
  • VARCHAR (including NATIONAL VARCHAR)
  • VARBINARY
  • JSON

语法

代码语言:sql复制
mysql> alter table sbtest2 modify c varchar(120) column_format compressed;

注:指定压缩的字段不能包含索引

甲骨文MySQL不支持此功能,请切换至Percona MySQL版本。

0 人点赞