Runlength 编码 - Amazon Redshift
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Runlength 编码

Runlength 编码将连续反复出现的值替换为一个包含该值及连续出现次数(连续出现长度)的标记。系统会为磁盘上的每个列数值数据块创建单独的唯一值词典。(一个 Amazon Redshift 磁盘数据块占用 1 MB 空间。) 此编码最适合数据值经常反复连续出现的表,例如,当表按这些值排序时。

例如,假设大型维度表中的某个列具有可预测的小型域,例如,可能值少于 10 的 COLOR 列。这些值很可能在表中以长序列出现,即使未对数据进行排序也是如此。

我们不建议对指定为排序键的任何列应用 runlength 编码。当数据块中包含相似的行数时,范围限制扫描可更好地执行。如果排序键列的压缩率远高于同一查询中的其他列,则范围限制扫描的执行效率可能会很差。

下表使用 COLOR 列的示例来显示 runlength 编码的工作方式。

原始数据值 原始大小(字节) 压缩值(标记) 压缩大小(字节)
Blue 4 {2,Blue} 5
Blue 4 0
Green 5 {3,Green} 6
Green 5 0
Green 5 0
Blue 4 {1,Blue} 5
Yellow 6 {4,Yellow} 7
Yellow 6 0
Yellow 6 0
Yellow 6 0
总计 51 23