启用 MySQL 压缩

在创建压缩表之前,请确保启用了 innodb_file_per_table 配置选项,并将 innodb_file_format 设置为 Barracuda。这些参数可以在 MySQL 配置文件my.cnf或 my.ini 中找到,或者使用 SET 语句,无需关闭 MySQL 服务器。

要对表启用压缩,可以在 CREATE TABLE 或 ALTER TABLE 语句中使用 ROW_FORMAT=COMPRESSED、KEY_BLOCK_SIZE 或两者子句。

让我们看看创建压缩表的语句 -

询问

SET GLOBAL innodb_file_per_table=1;

SET GLOBAL innodb_file_format=Barracuda;

CREATE TABLE t1

(c1 INT PRIMARY KEY)

ROW_FORMAT=COMPRESSED

KEY_BLOCK_SIZE=8;

这里,

  • 如果指定了 ROW_FORMAT=COMPRESSED,则可以省略 KEY_BLOCK_SIZE。

  • 使用默认页面大小值,这相当于 innodb_page_size 值的一半。

  • 如果指定了 KEY_BLOCK_SIZE,则可以省略 ROW_FORMAT=COMPRESSED。

  • 压缩是自动启用的。

  • 要确定 KEY_BLOCK_SIZE 属性的最佳值,用户需要为此子句创建具有不同值的同一表的多个副本。

  • 完成此操作后,测量生成的 .ibd 文件的大小并确定每个文件在实际工作负载下的执行情况。

  • KEY_BLOCK_SIZE 值被视为提示。

  • 如果 innodb_strict_mode=ON,如果指定了无效的 KEY_BLOCK_SIZE 值,则返回错误。

  • InnoDB 数据页的默认未压缩大小被视为 16KB。根据选项值的组合,MySQL 对表的 .ibd 文件使用 1KB、2KB、4KB、8KB 或 16KB 的页面大小。

  • 实际的压缩算法不受 KEY_BLOCK_SIZE 值的影响。

  • 表的所有索引(包括聚集索引)都将使用相同的页面大小进行压缩,这在 CREATE TABLE 或 ALTER TABLE 语句中指定。ROW_FORMAT 和 KEY_BLOCK_SIZE 等表属性不被视为 InnoDB 表的 CREATE INDEX 语法的一部分。因此,如果指定了它们,它们将被忽略。

以上是 启用 MySQL 压缩 的全部内容, 来源链接: utcz.com/z/322819.html

回到顶部