text255 和 bytedict Redshift 编码的区别

问题描述 投票:0回答:1

在 Redshift 中为

VARCHAR
列选择压缩编码时,当该列包含一小组潜在字符串值时,会出现两个选项:
text255
bytedict
。查看 AWS 文档 中对这些内容的描述,它们似乎执行相同的操作,但
bytedict
可以比
text255
多容纳 20 个值。那么,
text255
bytedict
有什么优势呢?

在这里提供一个例子,假设我有一个包含日本地区的列:[“hokkaido”,“tohoku”,“kanto”,“hokuriku”,“chubu”,“kansai”,“chokoku”,“shikoku” 、“九州”、“冲绳”]。

这些值将适合

VARCHAR(8)
列。如果我使用
text255
编码,则列中的每一行将消耗 1 个字节,并为字典条目额外消耗 80 个字节。根据我的理解,
bytedict
将提供完全相同的存储,并且对数据库查询的操作类似。那么,有什么区别呢?我注意到
text255
似乎使用术语“单词”而不是“列值”,所以它是按单词压缩的吗?如果是这样,我无法想象这将如何用于查询。

compression amazon-redshift
1个回答
0
投票

Bytedict 保存任何数据类型,但您注意到了这一点。 Bytedict 还对列的整个值进行操作。 Text256 对列文本值中的单词进行操作。

使用您的示例,如果相关列是“日本的地址”并且该区域是此列中文本的一部分,则 text255 可以用 1 字节索引替换这些区域名称。 列中的每个字(几个字节)都被 1 个字节替换。 Bytedict 只能索引整个值,并且由于此类列中可能存在大量唯一值,因此压缩此列几乎没有作用。

Text255 更适合其中包含大量重复单词的文本字符串值。

不过,通常最好对代表性数据(如果可用)执行和分析压缩,以了解所有可能性中的最佳编码。

© www.soinside.com 2019 - 2024. All rights reserved.