MySQL HeatWave 用户指南  / 第 2 章热浪  / 2.7 工作负载优化  /  2.7.1 编码字符串列

2.7.1 编码字符串列

对字符串列进行编码有助于加快对访问这些列的查询的处理。HeatWave 支持两种字符串列编码类型:

  • 变长编码 ( VARLEN)

  • 字典编码 ( SORTED)

当表加载到 HeatWave 中时,可变长度编码默认应用于CHARVARCHARTEXT-type 列。要使用字典编码,您必须 RAPID_COLUMN=ENCODING=SORTED在加载表之前在列注释中定义关键字字符串。关键字字符串必须大写;否则,它会被忽略。

CREATE TABLE您可以在or ALTER TABLE语句 中定义关键字字符串 ,如下所示:

CREATE TABLE orders (name VARCHAR(100) COMMENT 'RAPID_COLUMN=ENCODING=SORTED');
ALTER TABLE orders MODIFY name VARCHAR(100) COMMENT 'RAPID_COLUMN=ENCODING=SORTED';

RAPID_COLUMN=ENCODING=VARLEN如有必要,您可以使用关键字字符串 显式指定可变长度编码 。

笔记

列注释中允许包含其他信息。例如,允许在列编码关键字字符串旁边指定列描述:

COMMENT 'column_description RAPID_COLUMN=ENCODING=SORTED'

小费

对于字符串列编码建议,请在将表加载到 HeatWave 并运行查询后使用 Advisor 实用程序。有关详细信息,请参阅 第 2.7.3 节“使用 Advisor 优化工作负载”

要修改或删除字符串列编码,请参阅 第 2.4 节“修改表”中描述的过程。

编码类型选择

如果您打算运行JOIN涉及字符串列的操作或使用字符串函数和运算符,建议使用可变长度编码。可变长度编码比字典编码提供更多的表达式、过滤器、函数和运算符支持。否则,根据字符串列中不同值的数量相对于表的基数来选择编码类型。

  • 可变长度编码 ( VARLEN) 最适合具有大量不同值的列,例如评论列。

  • 字典编码 ( SORTED) 最适合不同值数量较少的列,例如国家列。

可变长度编码需要空间用于 HeatWave 节点上的列值。字典编码需要 MySQL 数据库系统节点上的空间用于字典。

下表提供了编码类型特征的概述:

表 2.1 列编码类型特征

编码类型 表达式、过滤器、函数和运算符支持 最适合 所需空间
Variable-length (VARLEN) 支持JOIN操作、字符串函数和运算符以及LIKE谓词。请参阅 第 2.12.1 节,“可变长度编码” 具有大量不同值的列 HeatWave 节点
Dictionary (SORTED) 不支持JOIN操作、字符串函数和运算符或LIKE谓词。 不同值数量较少的列 MySQL 数据库系统节点

有关字符串列编码的其他信息,请参阅 第 2.12 节,“字符串列编码参考”