启用 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